@ GNU AS assembler header file for OS
@ Written by DefMod (Dec  9 2012) on Sun Dec  9 15:47:40 2012
@ Jonathan Coxhead, jonathan@doves.demon.co.uk, 9 Feb 1997

@ OSLib---efficient, type-safe, transparent, extensible,
@ register-safe API coverage of RISC OS
@ 
@ Copyright (c) 1994-2012 Jonathan Coxhead and OSLib maintainers
@ 
@ Licence:
@ 
@    OSLib is free software; you can redistribute it and/or modify
@ it under the terms of the GNU General Public License as published by
@ the Free Software Foundation; either version 1, or (at your option)
@ any later version - and this with the following clarification and
@ special exception:
@ 
@    Linking this library statically or dynamically with other modules
@ is making a combined work based on this library. Thus, the terms
@ and conditions of the GNU General Public License cover the whole
@ combination.
@ 
@    As a special exception, the copyright holders of this library
@ give you permission to link this library with independent modules
@ to produce an executable, regardless of the license terms of these
@ independent modules, and to copy and distribute the resulting
@ executable under terms of your choice, provided that you also meet,
@ for each linked independent module, the terms and conditions of the
@ license of that module. An independent module is a module which is
@ not derived from or based on this library. If you modify this
@ library, you may extend this exception to your version of the library,
@ but you are not obliged to do so. If you do not wish to do so, delete
@ this exception statement from your version.
@ 
@    OSLib is distributed in the hope that it will be useful,
@ but WITHOUT ANY WARRANTY; without even the implied warranty of
@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@ GNU General Public License for more details.
@ 
@    You should have received a copy of the GNU General Public License
@ along with this programme; if not, write to the Free Software
@ Foundation, Inc, 675 Mass Ave, Cambridge, MA 02139, USA.

#ifndef OS_Hdr
#  define OS_Hdr

#  ifndef Get_Types
#    define Get_Types
#    include "oslib/Types.Hdr"
#  endif

@Symbols for constants
#  define OS_ErrorLimit 0xfc
#  define OS_FileNameLimit 0x100
#  define OS_CLILimit 0x100
#  define OS_CLILimitRO4 0x400
#  define OS_ModevarModeFlags 0x0
#  define OS_ModevarRScreen 0x1
#  define OS_ModevarBScreen 0x2
#  define OS_ModevarNColour 0x3
#  define OS_ModevarXEigFactor 0x4
#  define OS_ModevarYEigFactor 0x5
#  define OS_ModevarLineLength 0x6
#  define OS_ModevarScreenSize 0x7
#  define OS_ModevarYShiftFactor 0x8
#  define OS_ModevarLog2BPP 0x9
#  define OS_ModevarLog2BPC 0xa
#  define OS_ModevarXWindLimit 0xb
#  define OS_ModevarYWindLimit 0xc
#  define OS_Mode1bpp90x45 0x0
#  define OS_Mode2bpp90x45 0x8
#  define OS_Mode4bpp90x45 0xc
#  define OS_Mode8bpp90x45 0xf
#  define OS_Mode2bpp45x45 0x1
#  define OS_Mode4bpp45x45 0x9
#  define OS_Mode8bpp45x45 0xd
#  define OS_Mode1bpp90x90 0x19
#  define OS_Mode2bpp90x90 0x1a
#  define OS_Mode4bpp90x90 0x1b
#  define OS_Mode8bpp90x90 0x1c
#  define OS_RShift 0x8
#  define OS_GShift 0x10
#  define OS_BShift 0x18
#  define OS_R 0xff00
#  define OS_G 0xff0000
#  define OS_B 0xff000000
#  define OS_ColourRange 0xff
#  define OS_Inch 0xb4
#  define OS_VDUNull 0x0
#  define OS_VDUCharToPrinter 0x1
#  define OS_VDUPrinterOn 0x2
#  define OS_VDUPrinterOff 0x3
#  define OS_VDUGraphTextOff 0x4
#  define OS_VDUSplitCursors 0x4
#  define OS_VDUGraphTextOn 0x5
#  define OS_VDUJoinCursors 0x5
#  define OS_VDUScreenOn 0x6
#  define OS_VDUVduOn 0x6
#  define OS_VDUBell 0x7
#  define OS_VDUBackspace 0x8
#  define OS_VDUTab 0x9
#  define OS_VDULinefeed 0xa
#  define OS_VDULineFeed 0xa
#  define OS_VDUVerticalTab 0xb
#  define OS_VDUClS 0xc
#  define OS_VDUReturn 0xd
#  define OS_VDUPageModeOn 0xe
#  define OS_VDUPageModeOff 0xf
#  define OS_VDUClG 0x10
#  define OS_VDUSetTextColour 0x11
#  define OS_VDUSetGCOL 0x12
#  define OS_VDUSetPalette 0x13
#  define OS_VDUResetColours 0x14
#  define OS_VDUScreenOff 0x15
#  define OS_VDUVduOff 0x15
#  define OS_VDUMode 0x16
#  define OS_VDUSetMode 0x16
#  define OS_VDUMisc 0x17
#  define OS_VDUSetGraphicsWindow 0x18
#  define OS_VDUPlot 0x19
#  define OS_VDUPlotVdu 0x19
#  define OS_VDUResetWindows 0x1a
#  define OS_VDUEscape 0x1b
#  define OS_VDUSetTextWindow 0x1c
#  define OS_VDUSetGraphicsOrigin 0x1d
#  define OS_VDUHomeTextCursor 0x1e
#  define OS_VDUSetTextCursor 0x1f
#  define OS_VDUSpace 0x20
#  define OS_VDUDelete 0x7f
#  define OS_MiscInterlace 0x0
#  define OS_MiscCursor 0x1
#  define OS_MiscSetECF1 0x2
#  define OS_MiscSetECF2 0x3
#  define OS_MiscSetECF3 0x4
#  define OS_MiscSetECF4 0x5
#  define OS_MiscSetDotStyle 0x6
#  define OS_MiscScroll 0x7
#  define OS_MiscClearRegion 0x8
#  define OS_MiscSetOn 0x9
#  define OS_MiscSetOff 0xa
#  define OS_MiscSetBBCECF 0xb
#  define OS_MiscSetUnpackedECF1 0xc
#  define OS_MiscSetUnpackedECF2 0xd
#  define OS_MiscSetUnpackedECF3 0xe
#  define OS_MiscSetUnpackedECF4 0xf
#  define OS_MiscSetCursorMovement 0x10
#  define OS_MiscMisc 0x11
#  define OS_MiscSetTextFGTint 0x0
#  define OS_MiscSetTextBGTint 0x1
#  define OS_MiscSetGraphicsFGTint 0x2
#  define OS_MiscSetGraphicsBGTint 0x3
#  define OS_MiscSetECFInterpretation 0x4
#  define OS_MiscInvertText 0x5
#  define OS_MiscSetECFOrigin 0x6
#  define OS_MiscSetCharSize 0x7
#  define OS_ActionOverwrite 0x0
#  define OS_ActionDisjoin 0x1
#  define OS_ActionConjoin 0x2
#  define OS_ActionExclusiveDisjoin 0x3
#  define OS_ActionInvert 0x4
#  define OS_ActionIdentity 0x5
#  define OS_ActionConjoinNegation 0x6
#  define OS_ActionDisjoinNegation 0x7
#  define OS_ActionUseMask 0x8
#  define OS_ActionUseECF1 0x10
#  define OS_ActionUseECF2 0x20
#  define OS_ActionUseECF3 0x30
#  define OS_ActionUseECF4 0x40
#  define OS_ActionUseGiantECF 0x50
#  define OS_GCOLSetFG 0x0
#  define OS_GCOLSetBG 0x80
#  define OS_PlotSolid 0x0
#  define OS_PlotSolidExEnd 0x8
#  define OS_PlotDotted 0x10
#  define OS_PlotDottedExEnd 0x18
#  define OS_PlotSolidExStart 0x20
#  define OS_PlotSolidExBoth 0x28
#  define OS_PlotDottedExStart 0x30
#  define OS_PlotDottedExBoth 0x38
#  define OS_PlotPoint 0x40
#  define OS_PlotHorizontalToNonBG 0x48
#  define OS_PlotTriangle 0x50
#  define OS_PlotRightToBG 0x58
#  define OS_PlotRectangle 0x60
#  define OS_PlotHorizontalToFG 0x68
#  define OS_PlotParallelogram 0x70
#  define OS_PlotRightToNonFG 0x78
#  define OS_PlotFloodToNonBG 0x80
#  define OS_PlotFloodToFG 0x88
#  define OS_PlotCircleOutline 0x90
#  define OS_PlotCircle 0x98
#  define OS_PlotArc 0xa0
#  define OS_PlotSegment 0xa8
#  define OS_PlotSector 0xb0
#  define OS_PlotBlock 0xb8
#  define OS_PlotEllipseOutline 0xc0
#  define OS_PlotEllipse 0xc8
#  define OS_MoveBy 0x0
#  define OS_PlotBy 0x1
#  define OS_PlotInverseBy 0x2
#  define OS_PlotBGBy 0x3
#  define OS_MoveTo 0x4
#  define OS_PlotTo 0x5
#  define OS_PlotInverseTo 0x6
#  define OS_PlotBGTo 0x7
#  define OS_VartypeString 0x0
#  define OS_VartypeNumber 0x1
#  define OS_VartypeMacro 0x2
#  define OS_VartypeExpanded 0x3
#  define OS_VartypeLiteralString 0x4
#  define OS_VartypeCode 0x10
#  define OS_ModeFlagNonGraphics 0x1
#  define OS_ModeFlagTeletext 0x2
#  define OS_ModeFlagGap 0x4
#  define OS_ModeFlagBBCGap 0x8
#  define OS_ModeFlagHiResMono 0x10
#  define OS_ModeFlagDoubleHeight 0x20
#  define OS_ModeFlagHardwareScroll 0x40
#  define OS_ModeFlagFullPalette 0x80
#  define OS_ModeFlagInterlaced 0x10
#  define OS_ModeFlagGreyscale 0x20
#  define OS_ModeFlagDataFormat 0xf000
#  define OS_ModeFlagDataFormatShift 0xc
#  define OS_ModeFlagDataFormatRGB 0x0
#  define OS_ModeFlagDataFormatCMYK 0x1
#  define OS_VduvarModeFlags 0x0
#  define OS_VduvarRScreen 0x1
#  define OS_VduvarBScreen 0x2
#  define OS_VduvarNColour 0x3
#  define OS_VduvarXEigFactor 0x4
#  define OS_VduvarYEigFactor 0x5
#  define OS_VduvarLineLength 0x6
#  define OS_VduvarScreenSize 0x7
#  define OS_VduvarYShiftFactor 0x8
#  define OS_VduvarLog2BPP 0x9
#  define OS_VduvarLog2BPC 0xa
#  define OS_VduvarXWindLimit 0xb
#  define OS_VduvarYWindLimit 0xc
#  define OS_VduvarGWLCol 0x80
#  define OS_VduvarGWBRow 0x81
#  define OS_VduvarGWRCol 0x82
#  define OS_VduvarGWTRow 0x83
#  define OS_VduvarTWLCol 0x84
#  define OS_VduvarTWBRow 0x85
#  define OS_VduvarTWRCol 0x86
#  define OS_VduvarTWTRow 0x87
#  define OS_VduvarOrgX 0x88
#  define OS_VduvarOrgY 0x89
#  define OS_VduvarGCsX 0x8a
#  define OS_VduvarGCsY 0x8b
#  define OS_VduvarOlderCsX 0x8c
#  define OS_VduvarOlderCsY 0x8d
#  define OS_VduvarOldCsX 0x8e
#  define OS_VduvarOldCsY 0x8f
#  define OS_VduvarGCsIX 0x90
#  define OS_VduvarGCsIY 0x91
#  define OS_VduvarNewPtX 0x92
#  define OS_VduvarNewPtY 0x93
#  define OS_VduvarScreenStart 0x94
#  define OS_VduvarDisplayStart 0x95
#  define OS_VduvarTotalScreenSize 0x96
#  define OS_VduvarGPLFMD 0x97
#  define OS_VduvarGPLBMD 0x98
#  define OS_VduvarGFCOL 0x99
#  define OS_VduvarGBCOL 0x9a
#  define OS_VduvarTForeCol 0x9b
#  define OS_VduvarTBackCol 0x9c
#  define OS_VduvarGFTint 0x9d
#  define OS_VduvarGBTint 0x9e
#  define OS_VduvarTFTint 0x9f
#  define OS_VduvarTBTint 0xa0
#  define OS_VduvarMaxMode 0xa1
#  define OS_VduvarGCharSizeX 0xa2
#  define OS_VduvarGCharSizeY 0xa3
#  define OS_VduvarGCharSpaceX 0xa4
#  define OS_VduvarGCharSpaceY 0xa5
#  define OS_VduvarHLineAddr 0xa6
#  define OS_VduvarTCharSizeX 0xa7
#  define OS_VduvarTCharSizeY 0xa8
#  define OS_VduvarTCharSpaceX 0xa9
#  define OS_VduvarTCharSpaceY 0xaa
#  define OS_VduvarGCOLOraEorAddr 0xab
#  define OS_VduvarVIDCClockSpeed 0xac
#  define OS_VduvarDisplayNumber 0xc0
#  define OS_VduvarPolyHLineAddr 0xc1
#  define OS_VduvarWindowWidth 0x100
#  define OS_VduvarWindowHeight 0x101
#  define OS_VduvarEndList 0xffffffff
#  define OS_Foreground 0x0
#  define OS_Background 0x80
#  define OS_ColourTransparent 0xffffffff
#  define OS_ColourRed 0xff00
#  define OS_ColourGreen 0xff0000
#  define OS_ColourBlue 0xff000000
#  define OS_ColourCyan 0xffff0000
#  define OS_ColourMagenta 0xff00ff00
#  define OS_ColourYellow 0xffff00
#  define OS_ColourWhite 0xffffff00
#  define OS_ColourVeryLightGrey 0xdddddd00
#  define OS_ColourLightGrey 0xbbbbbb00
#  define OS_ColourMidLightGrey 0x99999900
#  define OS_ColourMidDarkGrey 0x77777700
#  define OS_ColourDarkGrey 0x55555500
#  define OS_ColourVeryDarkGrey 0x33333300
#  define OS_ColourBlack 0x0
#  define OS_ColourDarkBlue 0x99440000
#  define OS_ColourLightYellow 0xeeee00
#  define OS_ColourLightGreen 0xcc0000
#  define OS_ColourLightRed 0xdd00
#  define OS_ColourCream 0xbbeeee00
#  define OS_ColourDarkGreen 0x885500
#  define OS_ColourOrange 0xbbff00
#  define OS_ColourLightBlue 0xffbb0000
#  define OSDeviceType_CoreIRQHandler 0xffffffff
#  define OSDeviceType_DeviceNumberShift 0x0
#  define OSDeviceType_DeviceNumberMask 0xffffff
#  define OS_DevicePrinterBusy 0x0
#  define OS_DevicePrinter 0x0
#  define OS_DeviceSerialRinging 0x1
#  define OS_DeviceBatteryWarning 0x1
#  define OS_DevicePrinterAcknowledge 0x2
#  define OS_DeviceFloppyDiscIndex 0x2
#  define OS_DeviceVSync 0x3
#  define OS_DevicePowerOn 0x4
#  define OS_DeviceIOCTimer0 0x5
#  define OS_DeviceIOCTimer1 0x6
#  define OS_DeviceFIQDowngrade 0x7
#  define OS_DeviceExpansionFIQDowngrade 0x8
#  define OS_DeviceSoundBuffer 0x9
#  define OS_DeviceIDEDiscA 0x9
#  define OS_DeviceSerialController 0xa
#  define OS_DeviceSerialPort 0xa
#  define OS_DeviceHardDiscController 0xb
#  define OS_DeviceFloppyDisc 0xb
#  define OS_DeviceNetwork 0xb
#  define OS_DeviceFloppyDiscChanged 0xc
#  define OS_DeviceIDEDisc 0xc
#  define OS_DeviceFloppyDiscA 0xc
#  define OS_DeviceExpansionCard 0xd
#  define OS_DeviceKeyboardTxEmpty 0xe
#  define OS_DeviceKeyboardRxFull 0xf
#  define OS_DeviceDMAChannel0 0x10
#  define OS_DeviceDMAChannel1 0x11
#  define OS_DeviceDMAChannel2 0x12
#  define OS_DeviceDMAChannel3 0x13
#  define OS_DeviceDMASoundChannel0 0x14
#  define OS_DeviceDMASoundChannel1 0x15
#  define OS_DeviceMouseRxFull 0x16
#  define OS_DeviceMouseTxEmpty 0x17
#  define OS_DeviceJoystickConversion 0x18
#  define OS_DeviceEvent0 0x19
#  define OS_DeviceEvent1 0x1a
#  define OSDeviceType_GetIRQHandler 0x20000000
#  define OSDeviceType_RegisterSubChain 0x40000000
#  define OSDeviceType_PassOn 0x80000000
#  define OS_ErrorNumberShift 0x0
#  define OS_ErrorNumber 0xff
#  define OS_ErrorSourceShift 0x8
#  define OS_ErrorSource 0xffff00
#  define OS_ErrorCategoryShift 0x18
#  define OS_ErrorCategory 0x7000000
#  define OS_CategoryUnclassified 0x0
#  define OS_CategoryInformation 0x1
#  define OS_CategoryWarning 0x2
#  define OS_CategorySystem 0x3
#  define OS_GlobalEscape 0x1
#  define OS_GlobalFatal 0x2
#  define OS_GlobalIsAFil 0x3
#  define OS_GlobalIsntFil 0x4
#  define OS_GlobalIsADir 0x5
#  define OS_GlobalIsntDir 0x6
#  define OS_GlobalNoFile 0x7
#  define OS_GlobalNoDir 0x8
#  define OS_GlobalNoAny 0x9
#  define OS_GlobalTypsBad 0xa
#  define OS_GlobalBadRen 0xb
#  define OS_GlobalBadAcc 0xc
#  define OS_GlobalOpnFils 0xd
#  define OS_GlobalBadName 0xe
#  define OS_GlobalLongNam 0xf
#  define OS_GlobalChannel 0x10
#  define OS_GlobalBadSWI 0x11
#  define OS_GlobalModInUs 0x12
#  define OS_GlobalStrOFlo 0x13
#  define OS_GlobalNumOFlo 0x14
#  define OS_GlobalBufOFlo 0x15
#  define OS_GlobalBadStn 0x16
#  define OS_GlobalBadNet 0x17
#  define OS_GlobalFullNet 0x18
#  define OS_GlobalNoEco 0x19
#  define OS_GlobalBadRead 0x1a
#  define OS_GlobalBadWrt 0x1b
#  define OS_GlobalDataLst 0x1c
#  define OS_GlobalBadFSOp 0x1d
#  define OS_GlobalFSNoRd 0x1e
#  define OS_GlobalFSNoWrt 0x1f
#  define OS_GlobalFSInUse 0x20
#  define OS_GlobalBadAddress 0x21
#  define OS_GlobalNoStore 0x22
#  define OS_GlobalRAMLoadC 0x23
#  define OS_GlobalDDS0 0x24
#  define OS_GlobalDDS1 0x25
#  define OS_GlobalDDS2 0x26
#  define OS_GlobalDDS3 0x27
#  define OS_GlobalCSDS 0x28
#  define OS_GlobalLDS 0x29
#  define OS_GlobalURDS 0x2a
#  define OS_GlobalDr 0x2b
#  define OS_GlobalApp 0x2c
#  define OS_GlobalExDt 0x2d
#  define OS_GlobalExLdEx 0x2e
#  define OS_GlobalUseDesk 0x2f
#  define OS_GlobalAppQuit 0x30
#  define OS_GlobalNoMem 0x31
#  define OS_GlobalBadHard 0x32
#  define OS_GlobalBadParm 0x33
#  define OS_GlobalNoWimp 0x34
#  define Error_Escape 0x11
#  define Error_BadMode 0x19
#  define Error_IsADir 0xa8
#  define Error_TypesDontMatch 0xaf
#  define Error_BadRename 0xb0
#  define Error_BadCopy 0xb1
#  define Error_OutsideFile 0xb7
#  define Error_AccessViolation 0xbd
#  define Error_TooManyOpenFiles 0xc0
#  define Error_NotOpenForUpdate 0xc1
#  define Error_FileOpen 0xc2
#  define Error_ObjectLocked 0xc3
#  define Error_AlreadyExists 0xc4
#  define Error_BadFileName 0xcc
#  define Error_FileNotFound 0xd6
#  define Error_Syntax 0xdc
#  define Error_BadNoParms 0xdc
#  define Error_TooManyParms 0xdc
#  define Error_Channel 0xde
#  define Error_EndOfFile 0xdf
#  define Error_BadFilingSystemName 0xf8
#  define Error_UnknownFilingSystem 0xf8
#  define Error_BadKey 0xfb
#  define Error_BadAddress 0xfc
#  define Error_BadString 0xfd
#  define Error_BadAliasString 0xfd
#  define Error_BadParmString 0xfd
#  define Error_WildCards 0xfd
#  define Error_BadCommand 0xfe
#  define Error_BadMacVal 0x120
#  define Error_BadVarNam 0x121
#  define Error_BadVarType 0x122
#  define Error_VarNoRoom 0x123
#  define Error_VarCantFind 0x124
#  define Error_VarTooLong 0x125
#  define Error_RedirectFail 0x140
#  define Error_StackFull 0x141
#  define Error_BadHex 0x160
#  define Error_BadExpr 0x161
#  define Error_BadBra 0x162
#  define Error_StkOFlo 0x163
#  define Error_MissOpn 0x164
#  define Error_MissOpr 0x165
#  define Error_BadBits 0x166
#  define Error_StrOFlo 0x167
#  define Error_BadItm 0x168
#  define Error_DivZero 0x169
#  define Error_BadBase 0x16a
#  define Error_BadNumb 0x16b
#  define Error_NumbTooBig 0x16c
#  define Error_BadClaimNum 0x1a1
#  define Error_BadRelease 0x1a2
#  define Error_BadDevNo 0x1a3
#  define Error_BadDevVecRel 0x1a4
#  define Error_BadEnvNumber 0x1b0
#  define Error_CantCancelQuit 0x1b1
#  define Error_ChDynamCAO 0x1c0
#  define Error_ChDynamNotAllMoved 0x1c1
#  define Error_AplWSpaceInUse 0x1c2
#  define Error_RAMFsUnchangeable 0x1c3
#  define Error_OSCLILongLine 0x1e0
#  define Error_OSCLITooHard 0x1e1
#  define Error_RCExc 0x1e2
#  define Error_RCNegative 0x1e2
#  define Error_SysHeapFull 0x1e3
#  define Error_BuffOverflow 0x1e4
#  define Error_BadTime 0x1e5
#  define Error_NoSuchSWI 0x1e6
#  define Error_Unimplemented 0x1e7
#  define Error_OutOfRange 0x1e8
#  define Error_NoOSCLISpecials 0x1e9
#  define Error_BadParameters 0x1ea
#  define Error_ArgRepeated 0x1eb
#  define Error_BadReadSysInfo 0x1ec
#  define Error_CDATStackOverflow 0x2c0
#  define Error_CDATBufferOverflow 0x2c1
#  define Error_CDATBadField 0x2c2
#  define Error_CantStartApplication 0x600
#  define Error_BadCommandOption 0x601
#  define Error_UnknownSerialOp 0x602
#  define Error_BadHard 0x603
#  define OSReadLine_GivenEchoCharacter 0x40000000
#  define OSReadLine_SuppressInvalid 0x80000000
#  define OSReadLine_EchoCharacter 0xff
#  define OSReadLine_EchoCharacterShift 0x0
#  define OS_ReadControlTerminated 0x80000000
#  define OS_ReadByte 0x40000000
#  define OS_ReadLimited 0x20000000
#  define OS_DestroyVar 0xffffffff
#  define OS_GSTerminateOnSpace 0x20000000
#  define OS_GSRetainStick 0x40000000
#  define OS_GSRetainDoubleQuote 0x80000000
#  define OS_DynamicAreaApplicationSpace 0xffffffff
#  define OS_DynamicAreaSystemHeap 0x0
#  define OS_DynamicAreaRMA 0x1
#  define OS_DynamicAreaScreenMemory 0x2
#  define OS_DynamicAreaSystemSprites 0x3
#  define OS_DynamicAreaFontCache 0x4
#  define OS_DynamicAreaRAMDisc 0x5
#  define OS_DynamicAreaFreePool 0x6
#  define OS_DynamicVRAMRescue 0x7
#  define OS_DynamicKernelBuffers 0x8
#  define OS_DynamicAbortSVCAndIRQStackCopy 0xa
#  define OS_DynamicOperatingSystemROM 0xb
#  define OS_DynamicSWIDispatchIRQWorkspace 0xc
#  define OS_DynamicSVCStack 0xd
#  define OS_DynamicIRQStack 0xe
#  define OS_DynamicUNDStack 0xf
#  define OS_DynamicLevel2PageTables 0x10
#  define OS_DynamicSoftCAM 0x11
#  define OS_CurrentMode 0xffffffff
#  define OS_NonexistentMode 0xffffffff
#  define OS_NotEnoughMemoryForMode 0xfffffffe
#  define OS_NoAlternativeMode 0xfffffffe
#  define OS_HandlerMemoryLimit 0x0
#  define OS_HandlerUndefinedInstruction 0x1
#  define OS_HandlerPrefetchAbort 0x2
#  define OS_HandlerDataAbort 0x3
#  define OS_HandlerAddressException 0x4
#  define OS_HandlerOtherExceptions 0x5
#  define OS_HandlerError 0x6
#  define OS_HandlerCallBack 0x7
#  define OS_HandlerBreakPt 0x8
#  define OS_HandlerEscape 0x9
#  define OS_HandlerEvent 0xa
#  define OS_HandlerExit 0xb
#  define OS_HandlerUnusedSWI 0xc
#  define OS_HandlerExceptionRegisters 0xd
#  define OS_HandlerApplicationSpace 0xe
#  define OS_HandlerCAO 0xf
#  define OS_HandlerUpCall 0x10
#  define OS_HandlerBackwardCompatibility 0x11
#  define OS_SubstituteArgsIgnoreExtras 0x80000000
#  define OS_SortCardinal 0x0
#  define OS_SortInteger 0x1
#  define OS_SortCardinalPointer 0x2
#  define OS_SortIntegerPointer 0x3
#  define OS_SortCIString 0x4
#  define OS_SortString 0x5
#  define OS_SortGivenWorkspace 0x20000000
#  define OS_SortBuildArray 0x40000000
#  define OS_SortObjects 0x80000000
#  define OS_AreaAccessReadWrite 0x0
#  define OS_AreaAccessReadOnly 0x1
#  define OS_AreaAccessNone 0x3
#  define OS_AreaAccessShift 0x0
#  define OS_AreaNotBufferable 0x10
#  define OS_AreaNotCacheable 0x20
#  define OS_AreaDoublyMapped 0x40
#  define OS_AreaNoUserDrag 0x80
#  define OS_AreaNeedsGivenPages 0x100
#  define OS_AreaShrinkable 0x200
#  define OS_AreaSparse 0x400
#  define OS_AreaPrivate 0x800
#  define OS_AreaDMA 0x1000
#  define OS_AreaLocked 0x2000
#  define OS_AreaIsHeap 0x4000
#  define OS_AreaPhysical 0x8000
#  define OS_AreaAbortable 0x10000
#  define OS_AreaDomain 0x20000
#  define OS_AreaInvisible 0x40000
#  define OS_AreaFixedPage 0x80000
#  define OS_DisableChangedBox 0x0
#  define OS_EnableChangedBox 0x1
#  define OS_ResetChangedBox 0x2
#  define OS_ReadChangedBox 0xffffffff
#  define OS_ColourSetBG 0x10
#  define OS_ColourGivenPattern 0x20
#  define OS_ColourSetText 0x40
#  define OS_ColourRead 0x80
#  define PointerV_TypeQuadrature 0x0
#  define PointerV_TypeMicrosoft 0x1
#  define PointerV_TypeMouseSystems 0x2
#  define PointerV_TypePS2 0x3
#  define OSScreenModeConfigAccelerationFlags_SuspendCacheing 0x1
#  define OSScreenModeConfigAccelerationFlags_SuspendCleaning 0x2
#  define OSScreenModeConfigAccelerationFlags_DisableHWAcceleration 0x4
#  define OSScreenMode_ReadLaziness 0xffffffff
#  define OSScreenMode_FirstVSync 0x1
#  define OSScreenMode_SecondVSync 0x2
#  define OSScreenMode_ThirdVSync 0x3
#  define OSDisplayDeviceTagTagLength_TagShift 0x0
#  define OSDisplayDeviceTagTagLength_TagMask 0xffffff
#  define OSDisplayDeviceTagTagLength_TagLength 0x18
#  define OSDisplayDeviceTagTagLength_TagLengthMask 0xff
#  define OSDisplayDeviceTag_EndList 0x0
#  define OSDisplayDeviceTag_DeviceName 0x1
#  define OSDisplayDeviceTag_Features 0x2
#  define OSDisplayDeviceTag_Capabilities 0x3
#  define OSDisplayDeviceTag_Bandwidth 0x4
#  define OSDisplayDeviceTag_MaxPhysMem 0x5
#  define OSDisplayDeviceTag_Alignment 0x6
#  define OSDisplayDeviceTag_Model 0x7
#  define OSDisplayDeviceTag_DeviceSpecific 0x800000
#  define OSScreenModeRegisterDisplayDriverAction_None 0x0
#  define OSScreenModeRegisterDisplayDriverAction_SelectDisplay 0x1
#  define OSDynamicArea_AllocateArea 0xffffffff
#  define OSDynamicArea_AllocateBase 0xffffffff
#  define OSDynamicAreaDomainState_Read 0xffffffff
#  define OSDynamicAreaDomainState_Abort 0x0
#  define OSDynamicAreaDomainState_Normal 0x1
#  define OSDynamicAreaDomainState_Manager 0x3
#  define OSAbortTrap_Register 0x0
#  define OSAbortTrap_Deregister 0x1
#  define OSMemory_GivenPageNo 0x100
#  define OSMemory_GivenLogAddr 0x200
#  define OSMemory_GivenPhysAddr 0x400
#  define OSMemory_ReturnPageNo 0x800
#  define OSMemory_ReturnLogAddr 0x1000
#  define OSMemory_ReturnPhysAddr 0x2000
#  define OSMemory_Cache 0xc000
#  define OSMemory_CacheShift 0xe
#  define OSMemory_CacheDisable 0x2
#  define OSMemory_CacheEnable 0x3
#  define OSMemory_Type 0xf00
#  define OSMemory_TypeShift 0x8
#  define OSMemory_TypeAbsent 0x0
#  define OSMemory_TypeDRAM 0x1
#  define OSMemory_TypeVRAM 0x2
#  define OSMemory_TypeROM 0x3
#  define OSMemory_TypeIO 0x4
#  define OSMemory_TypeSoftROM 0x5
#  define OSMemory_ControllerNo 0xf
#  define OSMemory_ControllerNoShift 0x0
#  define OSMemory_ControllerType 0xfffffff0
#  define OSMemory_ControllerTypeShift 0x8
#  define OSMemory_ControllerTypeEASI 0x0
#  define OSMemory_ControllerTypeEASISpace 0x1
#  define OSMemory_ControllerTypeVIDC1 0x2
#  define OSMemory_ControllerTypeVIDC20 0x3
#  define OSMemory_ControllerTypeSSpace 0x4
#  define OSMemory_ControllerTypeExtensionROMs 0x5
#  define OSMemory_ControllerTypePrimaryROM 0x20
#  define OSMemory_ControllerTypeIOMD 0x21
#  define OSMemory_ControllerTypeFDC37C665 0x22
#  define OSMemory_IOBufferable 0x100
#  define OSMemory_IOCacheable 0x200
#  define OSMemory_IODoublyMapped 0x10000
#  define OSMemory_IORestrictAccess 0x20000
#  define OSMemory_IOAccess 0xf000000
#  define OSMemory_IOAccessShift 0x18
#  define OSMemory_Area 0xff00
#  define OSMemory_AreaShift 0x8
#  define OSMemory_AreaCursorSystemSound 0x1
#  define OSMemory_AreaIRQStack 0x2
#  define OSMemory_AreaSVCStack 0x3
#  define OSMemory_AreaABTStack 0x4
#  define OSMemory_AreaUNDStack 0x5
#  define OSMemory_AreaSoftCAM 0x6
#  define OSMemory_AreaLevelOnePageTables 0x7
#  define OSMemory_AreaLevelTwoPageTables 0x8
#  define OSMemory_AreaHALWorkspace 0x9
#  define OSMemory_AreaKernelBuffers 0xa
#  define OSMemory_AreaUncacheableHALWorkspace 0xb
#  define OSMemoryRecommendPageFlags_DMA 0x100
#  define OSMemoryCheckMemoryAccessBits_UserRFull 0x1
#  define OSMemoryCheckMemoryAccessBits_UserWFull 0x2
#  define OSMemoryCheckMemoryAccessBits_PrivRFull 0x4
#  define OSMemoryCheckMemoryAccessBits_PrivWFull 0x80
#  define OSMemoryCheckMemoryAccessBits_UserRPart 0x10
#  define OSMemoryCheckMemoryAccessBits_UserWPart 0x20
#  define OSMemoryCheckMemoryAccessBits_PrivRPart 0x40
#  define OSMemoryCheckMemoryAccessBits_PhysFull 0x100
#  define OSMemoryCheckMemoryAccessBits_AbortFull 0x200
#  define OSMemoryCheckMemoryAccessBits_PhysPart 0x1000
#  define OSMemoryCheckMemoryAccessBits_AbortPart 0x2000
#  define OS_MMUControlFlushRequestFlagSingleEntry 0x20000000
#  define OS_MMUControlFlushRequestFlagProcTLB 0x40000000
#  define OS_MMUControlFlushRequestFlagProcCache 0x80000000
#  define OS_PlatformCodeNeedsSynchronisation 0x1
#  define OS_PlatformNeedsPredisableFunction 0x2
#  define OS_PlatformExceptionVectorModifyNeeds32bit 0x4
#  define OS_PlatformPipelineLength2 0x8
#  define OS_PlatformFullEarlyDataAborts 0x10
#  define OS_Platform32BitOS 0x40
#  define OS_Platform26BitModeNotAvailable 0x80
#  define OS_GivenCodeRange 0x1
#  define OS_GivenAMBPageRange 0x100
#  define OS_LazySwappingDisable 0x0
#  define OS_LazySwappingEnable 0x1
#  define OS_LazySwappingRead 0xffffffff
#  define OS_Hex1Limit 0x1
#  define OS_Hex2Limit 0x2
#  define OS_Hex4Limit 0x4
#  define OS_Hex6Limit 0x6
#  define OS_Hex8Limit 0x8
#  define OS_Cardinal1Limit 0x3
#  define OS_Cardinal2Limit 0x5
#  define OS_Cardinal3Limit 0x8
#  define OS_Cardinal4Limit 0xa
#  define OS_Integer1Limit 0x4
#  define OS_Integer2Limit 0x6
#  define OS_Integer3Limit 0x8
#  define OS_Integer4Limit 0xb
#  define OS_Binary1Limit 0x8
#  define OS_Binary2Limit 0x10
#  define OS_Binary3Limit 0x18
#  define OS_Binary4Limit 0x20
#  define OS_SpacedCardinal1Limit 0x3
#  define OS_SpacedCardinal2Limit 0x6
#  define OS_SpacedCardinal3Limit 0xa
#  define OS_SpacedCardinal4Limit 0xd
#  define OS_SpacedInteger1Limit 0x4
#  define OS_SpacedInteger2Limit 0x7
#  define OS_SpacedInteger3Limit 0xa
#  define OS_SpacedInteger4Limit 0xe
#  define OS_FixedNetStationLimit 0x7
#  define OS_NetStationLimit 0x7
#  define OS_FixedFileSizeLimit 0xb
#  define OS_FileSizeLimit 0xb
#  define KeyV_TypeArchimedes 0x1
#  define KeyV_TypePCAT 0x2
#  define PaletteV_ScreenStateRead 0xffffffff
#  define PaletteV_ScreenStateNormal 0x0
#  define PaletteV_ScreenStateQuiet 0x1
#  define ServiceDisplayChangedState_InProcess 0x0
#  define ServiceDisplayChangedState_Done 0x1
#  define ServiceDisplayStatusReason_Deregistered 0x0
#  define ServiceDisplayStatusReason_Registered 0x1
#  define OS_TransitionMouseRight 0x1
#  define OS_TransitionMouseMiddle 0x2
#  define OS_TransitionMouseLeft 0x4
#  define OS_TransitionKeyEscape 0x0
#  define OS_TransitionKeyF1 0x1
#  define OS_TransitionKeyF2 0x2
#  define OS_TransitionKeyF3 0x3
#  define OS_TransitionKeyF4 0x4
#  define OS_TransitionKeyF5 0x5
#  define OS_TransitionKeyF6 0x6
#  define OS_TransitionKeyF7 0x7
#  define OS_TransitionKeyF8 0x8
#  define OS_TransitionKeyF9 0x9
#  define OS_TransitionKeyF10 0xa
#  define OS_TransitionKeyF11 0xb
#  define OS_TransitionKeyF12 0xc
#  define OS_TransitionKeyPrint 0xd
#  define OS_TransitionKeyScrollLock 0xe
#  define OS_TransitionKeyBreak 0xf
#  define OS_TransitionKeyGrave 0x10
#  define OS_TransitionKey1 0x11
#  define OS_TransitionKey2 0x12
#  define OS_TransitionKey3 0x13
#  define OS_TransitionKey4 0x14
#  define OS_TransitionKey5 0x15
#  define OS_TransitionKey6 0x16
#  define OS_TransitionKey7 0x17
#  define OS_TransitionKey8 0x18
#  define OS_TransitionKey9 0x19
#  define OS_TransitionKey0 0x1a
#  define OS_TransitionKeyHyphen 0x1b
#  define OS_TransitionKeyEquals 0x1c
#  define OS_TransitionKeyPound 0x1d
#  define OS_TransitionKeyBackspace 0x1e
#  define OS_TransitionKeyInsert 0x1f
#  define OS_TransitionKeyHome 0x20
#  define OS_TransitionKeyPageUp 0x21
#  define OS_TransitionKeyNumLock 0x22
#  define OS_TransitionKeyKeypadSlash 0x23
#  define OS_TransitionKeyKeypadStar 0x24
#  define OS_TransitionKeyKeypadHash 0x25
#  define OS_TransitionKeyTab 0x26
#  define OS_TransitionKeyQ 0x27
#  define OS_TransitionKeyW 0x28
#  define OS_TransitionKeyE 0x29
#  define OS_TransitionKeyR 0x2a
#  define OS_TransitionKeyT 0x2b
#  define OS_TransitionKeyY 0x2c
#  define OS_TransitionKeyU 0x2d
#  define OS_TransitionKeyI 0x2e
#  define OS_TransitionKeyO 0x2f
#  define OS_TransitionKeyP 0x30
#  define OS_TransitionKeySquareBra 0x31
#  define OS_TransitionKeySquareKet 0x32
#  define OS_TransitionKeyBackslash 0x33
#  define OS_TransitionKeyDelete 0x34
#  define OS_TransitionKeyCopy 0x35
#  define OS_TransitionKeyPageDown 0x36
#  define OS_TransitionKeyKeypad7 0x37
#  define OS_TransitionKeyKeypad8 0x38
#  define OS_TransitionKeyKeypad9 0x39
#  define OS_TransitionKeyKeypadMinus 0x3a
#  define OS_TransitionKeyLeftControl 0x3b
#  define OS_TransitionKeyA 0x3c
#  define OS_TransitionKeyS 0x3d
#  define OS_TransitionKeyD 0x3e
#  define OS_TransitionKeyF 0x3f
#  define OS_TransitionKeyG 0x40
#  define OS_TransitionKeyH 0x41
#  define OS_TransitionKeyJ 0x42
#  define OS_TransitionKeyK 0x43
#  define OS_TransitionKeyL 0x44
#  define OS_TransitionKeySemicolon 0x45
#  define OS_TransitionKeyAcute 0x46
#  define OS_TransitionKeyReturn 0x47
#  define OS_TransitionKeyKeypad4 0x48
#  define OS_TransitionKeyKeypad5 0x49
#  define OS_TransitionKeyKeypad6 0x4a
#  define OS_TransitionKeyKeypadPlus 0x4b
#  define OS_TransitionKeyLeftShift 0x4c
#  define OS_TransitionKeyZ 0x4e
#  define OS_TransitionKeyX 0x4f
#  define OS_TransitionKeyC 0x50
#  define OS_TransitionKeyV 0x51
#  define OS_TransitionKeyB 0x52
#  define OS_TransitionKeyN 0x53
#  define OS_TransitionKeyM 0x54
#  define OS_TransitionKeyComma 0x55
#  define OS_TransitionKeyPoint 0x56
#  define OS_TransitionKeySlash 0x57
#  define OS_TransitionKeyRightShift 0x58
#  define OS_TransitionKeyUp 0x59
#  define OS_TransitionKeyKeypad1 0x5a
#  define OS_TransitionKeyKeypad2 0x5b
#  define OS_TransitionKeyKeypad3 0x5c
#  define OS_TransitionKeyCapsLock 0x5d
#  define OS_TransitionKeyLeftAlt 0x5e
#  define OS_TransitionKeySpace 0x5f
#  define OS_TransitionKeyRightAlt 0x60
#  define OS_TransitionKeyRightControl 0x61
#  define OS_TransitionKeyLeft 0x62
#  define OS_TransitionKeyDown 0x63
#  define OS_TransitionKeyRight 0x64
#  define OS_TransitionKeyKeypad0 0x65
#  define OS_TransitionKeyKeypadPoint 0x66
#  define OS_TransitionKeyEnter 0x67
#  define OS_TransitionUp 0x0
#  define OS_TransitionDown 0x1

@Symbols for structure offsets and sizes
        .struct 0
        .skip   Int
OS_T                           : 

        .struct 0
        .skip   Byte
OS_F                           : 

        .struct 0
        .skip   Bits
OS_FW                          : 

@ abstract type
#  define OS_Mode 4

        .struct 0
        .skip   Byte
OS_GCOL                        : 

        .struct 0
        .skip   Byte
OS_Tint                        : 

        .struct 0
        .skip   Byte
OS_Action                      : 

        .struct 0
        .skip   Bits
OS_Colour                      : 

        .struct 0
        .skip   Int
OS_ColourNumber                : 

        .struct 0
OS_ColourPair_on               : .skip   OS_Colour
OS_ColourPair_off              : .skip   OS_Colour
OS_ColourPair                  : 

        .struct 0
OS_Palette_entries             : .skip   OS_Colour
OS_Palette                     : 

        .struct 0
OS_SpritePalette_entries       : .skip   OS_ColourPair
OS_SpritePalette               : 

        .struct 0
OS_ECF_ecf                     : .skip   8*Bits
OS_ECF                         : 

        .struct 0
OS_CorrectionTable_gamma       : .skip   256*Byte
OS_CorrectionTable             : 

        .struct 0
OS_BCDDateAndTime_year         : .skip   Byte
OS_BCDDateAndTime_month        : .skip   Byte
OS_BCDDateAndTime_date         : .skip   Byte
OS_BCDDateAndTime_weekday      : .skip   Byte
OS_BCDDateAndTime_hour         : .skip   Byte
OS_BCDDateAndTime_minute       : .skip   Byte
OS_BCDDateAndTime_second       : .skip   Byte
OS_BCDDateAndTime              : 

        .struct 0
OS_StationNumber_station       : .skip   Int
OS_StationNumber_net           : .skip   Int
OS_StationNumber               : 

        .struct 0
OS_Box_x0                      : .skip   Int
OS_Box_y0                      : .skip   Int
OS_Box_x1                      : .skip   Int
OS_Box_y1                      : .skip   Int
OS_Box                         : 

        .struct 0
OS_Factors_xmul                : .skip   Int
OS_Factors_ymul                : .skip   Int
OS_Factors_xdiv                : .skip   Int
OS_Factors_ydiv                : .skip   Int
OS_Factors                     : 

        .struct 0
OS_ChangeBox_state             : .skip   Int
OS_ChangeBox_box               : .skip   OS_Box
OS_ChangeBox                   : 

        .struct 0
OS_Error_errnum                : .skip   Bits
OS_Error_errmess               : .skip   252*Char
OS_Error                       : 

        .struct 0
        .skip   5*Byte
OS_DateAndTime                 : 


        .struct 0
OS_Coord_x                     : .skip   Int
OS_Coord_y                     : .skip   Int
OS_Coord                       : 

        .struct 0
OS_Trfm_entries                : .skip   6*Int
OS_Trfm                        : 

        .struct 0
OS_HomTrfm_entries             : .skip   4*Int
OS_HomTrfm                     : 

        .struct 0
OS_Pgm_coords                  : .skip   OS_Coord
OS_Pgm                         : 

        .struct 0
OS_ErrorHandlerBuffer_pc       : .skip   Int
OS_ErrorHandlerBuffer_errnum   : .skip   Bits
OS_ErrorHandlerBuffer_errmess  : .skip   248*Char
OS_ErrorHandlerBuffer          : 

        .struct 0
OS_StringValue_offset          : .skip   Int
        .struct 0
OS_StringValue_pointer         : .skip   Ptr
OS_StringValue                 : 

        .struct 0
        .skip   Int
OS_ModeVar                     : 

        .struct 0
        .skip   Bits
OS_PlotCode                    : 

        .struct 0
        .skip   Int
OS_VarType                     : 

        .struct 0
        .skip   Bits
OS_ModeFlags                   : 

        .struct 0
        .skip   OS_ModeVar
OS_VDUVar                      : 

        .struct 0
        .skip   Bits
OS_DeviceType                  : 

        .struct 0
        .skip   Bits
OSReadLine_Flags               : 

        .struct 0
OS_RegisterBlock_registers     : .skip   16*Int
OS_RegisterBlock_cpsr          : .skip   Int
OS_RegisterBlock               : 

        .struct 0
        .skip   Bits
OS_ReadUnsignedFlags           : 

        .struct 0
        .skip   Bits
OS_GSFlags                     : 

        .struct 0
        .skip   Int
OS_DynamicAreaNo               : 

        .struct 0
OS_VDUVarList_var              : .skip   OS_VDUVar
OS_VDUVarList                  : 

        .struct 0
OS_KeyHandler_k                : .skip   Byte
OS_KeyHandler                  : 

        .struct 0
        .skip   Int
OS_HandlerType                 : 

        .struct 0
        .skip   Bits
OS_SubstituteArgsFlags         : 

        .struct 0
OS_GI_type                     : .skip   Byte
OS_GI_i                        : .skip   4*Byte
OS_GI                          : 

        .struct 0
OS_GS_size                     : .skip   Short
OS_GS_s                        : .skip   Char
OS_GS                          : 
        
        .altmacro
        .macro  OS_GS_MEMBERS label
\label&_size                   : .skip   Short
        .endm
        
        .struct 0
        OS_GS_MEMBERS OS_GSBase
OS_GSBase                      : 

        .struct 0
        .skip   Ptr
OS_SortType                    : 

@ abstract type
#  define OS_HeapSortFlags 4

        .struct 0
        .skip   Bits
OS_AreaFlags                   : 

        .struct 0
OS_MemMapRequest_page_no       : .skip   Int
OS_MemMapRequest_map           : .skip   Ptr
OS_MemMapRequest_access        : .skip   OS_AreaFlags
OS_MemMapRequest               : 

        .struct 0
OS_MemMapRequestList_requests  : .skip   OS_MemMapRequest
OS_MemMapRequestList           : 

        .struct 0
OS_PageBlock_page_no           : .skip   Int
OS_PageBlock_log_addr          : .skip   Ptr
OS_PageBlock_phys_addr         : .skip   Ptr
OS_PageBlock                   : 

        .struct 0
        .skip   Int
OS_ChangedBoxState             : 

        .struct 0
        .skip   Bits
OS_ColourFlags                 : 

        .struct 0
        .skip   Int
OS_PointerType                 : 

        .struct 0
        .skip   Bits
OSScreenModeConfigAcceleration_Flags: 

        .struct 0
        .skip   Int
OSScreenModeConfigAcceleration_CleanerLaziness: 

        .struct 0
        .skip   Bits
OSDisplayDevice_TagTagLength   : 

        .struct 0
OSDisplayDeviceDescriptor_entry: 
OSDisplayDeviceDescriptor_entry_tag_taglength: .skip   OSDisplayDevice_TagTagLength
        .struct OSDisplayDeviceDescriptor_entry
OSDisplayDeviceDescriptor_entry_value: .skip   Int
OSDisplayDeviceDescriptor      : 

        .struct 0
        .skip   Int
OSScreenModeRegisterDisplayDriver_Action: 

        .struct 0
        .skip   Int
OSDynamicAreaDomain_State      : 

        .struct 0
        .skip   Bits
OSAbortTrap_Flags              : 

        .struct 0
        .skip   Bits
OSMemory_Flags                 : 

        .struct 0
        .skip   Bits
OSMemory_TypeFlags             : 

        .struct 0
        .skip   Bits
OSMemory_ControllerFlags       : 

        .struct 0
        .skip   Bits
OSMemory_IOFlags               : 

@ abstract type
#  define OSMemory_IOReferenceKey 4

        .struct 0
        .skip   Bits
OSMemory_AreaFlags             : 

        .struct 0
        .skip   Bits
OSMemoryRecommendPage_Flags    : 

        .struct 0
        .skip   Bits
OSMemoryCheckMemoryAccess_Flags: 

        .struct 0
        .skip   Bits
OSMemoryCheckMemoryAccess_Bits : 

        .struct 0
        .skip   Bits
OSMemoryReadControllerBaseAddress_Flags: 

        .struct 0
        .skip   Bits
OS_MMUControlFlushRequestFlags : 

        .struct 0
        .skip   Bits
OS_PlatformFeatureFlags        : 

        .struct 0
        .skip   Bits
OS_SynchroniseCodeFlags        : 

        .struct 0
        .skip   Int
OS_AMB                         : 

        .struct 0
        .skip   Bits
OS_AMBControlFlags             : 

        .struct 0
        .skip   Int
OS_LazySwapping                : 

        .struct 0
        .skip   Bits
OS_AMBFlags                    : 

        .struct 0
OS_AMBInfo_amb                 : .skip   OS_AMB
OS_AMBInfo_pages               : .skip   Int
OS_AMBInfo_base_address        : .skip   Ptr
OS_AMBInfo_flags               : .skip   OS_AMBFlags
OS_AMBInfo                     : 

        .struct 0
OS_AMBTable_count              : .skip   Int
OS_AMBTable_current_amb        : .skip   OS_AMB
OS_AMBTable_entries            : .skip   OS_AMBInfo
OS_AMBTable                    : 
        
        .altmacro
        .macro  OS_AMBTable_MEMBERS label
\label&_count                  : .skip   Int
\label&_current_amb            : .skip   OS_AMB
        .endm
        
        .struct 0
        OS_AMBTable_MEMBERS OS_AMBTableBase
OS_AMBTableBase                : 

        .struct 0
        .skip   Bits
OS_HardwareFlags               : 

        .struct 0
        .skip   Int
KeyV_Type                      : 

        .struct 0
        .skip   Int
PaletteV_ScreenState           : 

        .struct 0
PointerV_Record_next           : .skip   Ptr
PointerV_Record_flags          : .skip   Bits
PointerV_Record_pointer_type   : .skip   OS_PointerType
PointerV_Record_name           : .skip   30*Char
PointerV_Record                : 

        .struct 0
OS_ModeBlock_size              : .skip   Int
OS_ModeBlock_flags             : .skip   Bits
OS_ModeBlock_xres              : .skip   Int
OS_ModeBlock_yres              : .skip   Int
OS_ModeBlock_log2_bpp          : .skip   Int
OS_ModeBlock_frame_rate        : .skip   Int
OS_ModeBlock_name              : .skip   Char
OS_ModeBlock                   : 
        
        .altmacro
        .macro  OS_ModeBlock_MEMBERS label
\label&_size                   : .skip   Int
\label&_flags                  : .skip   Bits
\label&_xres                   : .skip   Int
\label&_yres                   : .skip   Int
\label&_log2_bpp               : .skip   Int
\label&_frame_rate             : .skip   Int
        .endm
        
        .struct 0
        OS_ModeBlock_MEMBERS OS_ModeBlockBase
OS_ModeBlockBase               : 

        .struct 0
OS_ModeSelector_flags          : .skip   Bits
OS_ModeSelector_xres           : .skip   Int
OS_ModeSelector_yres           : .skip   Int
OS_ModeSelector_log2_bpp       : .skip   Int
OS_ModeSelector_frame_rate     : .skip   Int
OS_ModeSelector_modevars_var   : .skip   OS_ModeVar
OS_ModeSelector_modevars_val   : .skip   Int
OS_ModeSelector                : 
        
        .altmacro
        .macro  OS_ModeSelector_MEMBERS label
\label&_flags                  : .skip   Bits
\label&_xres                   : .skip   Int
\label&_yres                   : .skip   Int
\label&_log2_bpp               : .skip   Int
\label&_frame_rate             : .skip   Int
        .endm
        
        .struct 0
        OS_ModeSelector_MEMBERS OS_ModeSelectorBase
OS_ModeSelectorBase            : 

        .struct 0
        .skip   Int
ServiceDisplayChanged_State    : 

        .struct 0
        .skip   Int
ServiceDisplayStatus_Reason    : 


@Symbols for SWI's and SWI reason codes
.set XOS_ReadVarValSize,0x20023
.set OS_ReadVarValSize,0x23
   @Entry
   @  R0 -> var (String)
   @  R1 = &0
   @  R2 = &80000000
   @  R3 = context (Int)
   @  R4 = var_type (OS_VarType)
   @Exit
   @  R0 corrupted
   @  R2 = used (Int)
   @  R3 = context_out (Int)
   @  R4 = var_type_out (OS_VarType)

.set XOS_ChangeDynamicAreaNoFail,0x2002a
.set OS_ChangeDynamicAreaNoFail,0x2a
   @Entry
   @  R0 = area_type (OS_DynamicAreaNo)
   @  R1 = change (Int)
   @Exit
   @  R1 = change_out (Int)

.set XOS_WriteC,0x20000
.set OS_WriteC,0x0
   @Entry
   @  R0 = c (Char)

.set XOS_WriteS,0x20001
.set OS_WriteS,0x1

.set XOS_Write0,0x20002
.set OS_Write0,0x2
   @Entry
   @  R0 -> s (String)
   @Exit
   @  R0 corrupted

.set XOS_NewLine,0x20003
.set OS_NewLine,0x3

.set XOS_ReadC,0x20004
.set OS_ReadC,0x4
   @Exit
   @  R0 = c (Char)

.set XOS_CLI,0x20005
.set OS_CLI,0x5
   @Entry
   @  R0 -> command (String)

.set XOS_ReadLine,0x2000e
.set OS_ReadLine,0xe
   @Entry
   @  R0 = buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

.set XOS_ReadLineGivenEcho,0x2000e
.set OS_ReadLineGivenEcho,0xe
   @Entry
   @  R0 = &40000000 :OR: buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @  R4 = echo (Char)
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

.set XOS_ReadLineSuppressInvalid,0x2000e
.set OS_ReadLineSuppressInvalid,0xe
   @Entry
   @  R0 = &80000000 :OR: buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

.set XOS_ReadLineGivenEchoSuppressInvalid,0x2000e
.set OS_ReadLineGivenEchoSuppressInvalid,0xe
   @Entry
   @  R0 = &C0000000 :OR: buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @  R4 = echo (Char)
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

.set XOS_ReadLine32,0x2007d
.set OS_ReadLine32,0x7d
   @Entry
   @  R0 = buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @  R4 = flags (OSReadLine_Flags)
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

.set XOS_Control,0x2000f
.set OS_Control,0xf
   @Entry
   @  R0 = error_handler (pointer to code)
   @  R1 = error_buffer (pointer to OS_Error)
   @  R2 = escape_handler (pointer to code)
   @  R3 = event_handler (pointer to code)
   @Exit
   @  R0 = old_error_handler (pointer to code)
   @  R1 = old_error_buffer (pointer to OS_Error)
   @  R2 = old_escape_handler (pointer to code)
   @  R3 = old_event_handler (pointer to code)

.set XOS_GetEnv,0x20010
.set OS_GetEnv,0x10
   @Exit
   @  R0 -> command (String)
   @  R1 = ram_limit (pointer to data)
   @  R2 -> start (OS_DateAndTime)

.set XOS_Exit,0x20011
.set OS_Exit,0x11
   @Entry
   @  R0 -> error (OS_Error)
   @  R1 = &58454241
   @  R2 = rc (Int)

.set XOS_SetEnv,0x20012
.set OS_SetEnv,0x12
   @Entry
   @  R0 = exit_handler (pointer to code)
   @  R1 = ram_limit (pointer to data)
   @  R4 = undefined_instruction_handler (pointer to code)
   @  R5 = prefetch_abort_handler (pointer to code)
   @  R6 = data_abort_handler (pointer to code)
   @  R7 = address_exception_handler (pointer to code)
   @Exit
   @  R0 = old_exit_handler (pointer to code)
   @  R1 = old_ram_limit (pointer to data)
   @  R4 = old_undefined_instruction_handler (pointer to code)
   @  R5 = old_prefetch_abort_handler (pointer to code)
   @  R6 = old_data_abort_handler (pointer to code)
   @  R7 = old_address_exception_handler (pointer to code)

.set XOS_IntOn,0x20013
.set OS_IntOn,0x13

.set XOS_IntOff,0x20014
.set OS_IntOff,0x14

.set XOS_CallBack,0x20015
.set OS_CallBack,0x15
   @Entry
   @  R0 -> register_block (OS_RegisterBlock)
   @  R1 = call_back_handler (pointer to code)
   @Exit
   @  R0 -> old_register_block (OS_RegisterBlock)
   @  R1 = old_call_back_handler (pointer to code)

.set XOS_EnterOS,0x20016
.set OS_EnterOS,0x16

.set XOS_LeaveOS,0x2007c
.set OS_LeaveOS,0x7c

.set XOS_BreakPt,0x20017
.set OS_BreakPt,0x17

.set XOS_BreakCtrl,0x20018
.set OS_BreakCtrl,0x18
   @Entry
   @  R0 = register_block (pointer to OS_RegisterBlock)
   @  R1 = break_pt_handler (pointer to code)
   @Exit
   @  R0 = old_register_block (pointer to OS_RegisterBlock)
   @  R1 = old_break_pt_handler (pointer to code)

.set XOS_UnusedSWI,0x20019
.set OS_UnusedSWI,0x19
   @Entry
   @  R0 = unused_swi_handler (pointer to code)
   @Exit
   @  R0 = old_unused_swi_handler (pointer to code)

.set XOS_UpdateMEMC,0x2001a
.set OS_UpdateMEMC,0x1a
   @Entry
   @  R0 = value (Bits)
   @  R1 = mask (Bits)
   @Exit
   @  R0 = old_value (Bits)
   @  R1 corrupted

.set XOS_SetCallBack,0x2001b
.set OS_SetCallBack,0x1b

.set XOS_Mouse,0x2001c
.set OS_Mouse,0x1c
   @Exit
   @  R0 = x (Int)
   @  R1 = y (Int)
   @  R2 = buttons (Bits)
   @  R3 = t (OS_T)

.set XOS_Claim,0x2001f
.set OS_Claim,0x1f
   @Entry
   @  R0 = vector (Int)
   @  R1 = routine (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_Release,0x20020
.set OS_Release,0x20
   @Entry
   @  R0 = vector (Int)
   @  R1 = routine (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_ReadUnsigned,0x20021
.set OS_ReadUnsigned,0x21
   @Entry
   @  R0 = flags (OS_ReadUnsignedFlags)
   @  R1 -> number (String)
   @  R2 = limit (Bits)
   @Exit
   @  R1 -> end (Char)
   @  R2 = value (Bits)

.set XOS_GenerateEvent,0x20022
.set OS_GenerateEvent,0x22

.set XOS_ReadVarVal,0x20023
.set OS_ReadVarVal,0x23
   @Entry
   @  R0 -> var (String)
   @  R1 = value (pointer to String)
   @  R2 = size (Int)
   @  R3 = context (Int)
   @  R4 = var_type (OS_VarType)
   @Exit
   @  R0 corrupted
   @  R2 = used (Int)
   @  R3 = context_out (Int)
   @  R4 = var_type_out (OS_VarType)

.set XOS_SetVarVal,0x20024
.set OS_SetVarVal,0x24
   @Entry
   @  R0 -> var (String)
   @  R1 -> value (data)
   @  R2 = size (Int)
   @  R3 = context (Int)
   @  R4 = var_type (OS_VarType)
   @Exit
   @  R3 = context_out (Int)
   @  R4 = var_type_out (OS_VarType)

#  define OSSetVarVal_Code 0x10
   @Entry
   @  R0 -> var (String)
   @  R1 = read_write_code (pointer to code)
   @  R2 = size (Int)
   @  R3 = context (Int)
   @  R4 = &10
   @Exit
   @  R3 = context_out (Int)
   @  R4 = var_type_out (OS_VarType)

.set XOS_GSInit,0x20025
.set OS_GSInit,0x25
   @Entry
   @  R0 -> s (String)
   @  R2 = flags (OS_GSFlags)
   @Exit
   @  R0 = context1 (Int)
   @  R1 corrupted
   @  R2 = context2 (Int)

.set XOS_GSRead,0x20026
.set OS_GSRead,0x26
   @Entry
   @  R0 = context1 (Int)
   @  R2 = context2 (Int)
   @Exit
   @  R0 = context1_out (Int)
   @  R1 = c (Char)
   @  R2 = context2_out (Int)

.set XOS_GSTrans,0x20027
.set OS_GSTrans,0x27
   @Entry
   @  R0 -> s (String)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 corrupted
   @  R2 = used (Int)

.set XOS_BinaryToDecimal,0x20028
.set OS_BinaryToDecimal,0x28
   @Entry
   @  R0 = i (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R2 = used (Int)

.set XOS_ChangeDynamicArea,0x2002a
.set OS_ChangeDynamicArea,0x2a
   @Entry
   @  R0 = area_type (OS_DynamicAreaNo)
   @  R1 = change (Int)
   @Exit
   @  R1 = change_out (Int)

.set XOS_GenerateError,0x2002b
.set OS_GenerateError,0x2b
   @Entry
   @  R0 -> error (OS_Error)

.set XOS_ReadEscapeState,0x2002c
.set OS_ReadEscapeState,0x2c

.set XOS_EvaluateExpression,0x2002d
.set OS_EvaluateExpression,0x2d
   @Entry
   @  R0 -> expr (String)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R1 = expr_is_str (Bool)
   @  R2 = int_value_or_str_used (Int)

.set XOS_ReadPalette,0x2002f
.set OS_ReadPalette,0x2f
   @Entry
   @  R0 = entry (OS_ColourNumber)
   @  R1 = colour_type (Int)
   @Exit
   @  R2 = on (OS_Colour)
   @  R3 = off (OS_Colour)

.set XOS_ServiceCall,0x20030
.set OS_ServiceCall,0x30

.set XOS_ReadVduVariables,0x20031
.set OS_ReadVduVariables,0x31
   @Entry
   @  R0 -> var_list (OS_VDUVarList)
   @  R1 = value_list (pointer to Int)

.set XOS_ReadPoint,0x20032
.set OS_ReadPoint,0x32
   @Entry
   @  R0 = x (Int)
   @  R1 = y (Int)
   @Exit
   @  R2 = gcol (OS_GCOL)
   @  R3 = tint (OS_Tint)
   @  R4 = off_screen (Bool)

.set XOS_UpCall,0x20033
.set OS_UpCall,0x33

.set XOS_ReadModeVariable,0x20035
.set OS_ReadModeVariable,0x35
   @Entry
   @  R0 = mode (OS_Mode)
   @  R1 = var (OS_ModeVar)
   @Exit
   @  R2 = var_val (Int)

.set XOS_RemoveCursors,0x20036
.set OS_RemoveCursors,0x36

.set XOS_RestoreCursors,0x20037
.set OS_RestoreCursors,0x37

.set XOS_SWINumberToString,0x20038
.set OS_SWINumberToString,0x38
   @Entry
   @  R0 = swi (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R2 = used (Int)

.set XOS_SWINumberFromString,0x20039
.set OS_SWINumberFromString,0x39
   @Entry
   @  R1 -> swi_name (String)
   @Exit
   @  R0 = swi (Int)

.set XOS_ValidateAddress,0x2003a
.set OS_ValidateAddress,0x3a
   @Entry
   @  R0 = min (pointer to data)
   @  R1 = max (pointer to data)

.set XOS_CallAfter,0x2003b
.set OS_CallAfter,0x3b
   @Entry
   @  R0 = delay (Int)
   @  R1 = code (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_CallEvery,0x2003c
.set OS_CallEvery,0x3c
   @Entry
   @  R0 = delay (Int)
   @  R1 = code (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_RemoveTickerEvent,0x2003d
.set OS_RemoveTickerEvent,0x3d
   @Entry
   @  R0 = code (pointer to code)
   @  R1 = handle (pointer to data)

.set XOS_InstallKeyHandler,0x2003e
.set OS_InstallKeyHandler,0x3e
   @Entry
   @  R0 -> key_handler (OS_KeyHandler)
   @Exit
   @  R0 -> old_key_handler (OS_KeyHandler)

.set XOS_CheckModeValid,0x2003f
.set OS_CheckModeValid,0x3f
   @Entry
   @  R0 = mode (OS_Mode)
   @Exit
   @  R0 = mode_status (Int)
   @  R1 = alternative_mode (OS_Mode)

.set XOS_ChangeEnvironment,0x20040
.set OS_ChangeEnvironment,0x40
   @Entry
   @  R0 = handler_type (OS_HandlerType)
   @  R1 = handler (pointer to code)
   @  R2 = handle (pointer to data)
   @  R3 = buffer (pointer to data)
   @Exit
   @  R1 = old_handler (pointer to code)
   @  R2 = old_handle (pointer to data)
   @  R3 = old_buffer (pointer to data)

.set XOS_ClaimScreenMemory,0x20041
.set OS_ClaimScreenMemory,0x41

#  define OSClaimScreenMemory_Free 0x0
   @Entry
   @  R0 = &0

#  define OSClaimScreenMemory_Alloc 0x1
   @Entry
   @  R0 = &1
   @  R1 = size (Int)
   @Exit
   @  R1 = size_out (Int)
   @  R2 = blk (pointer to Void)

.set XOS_ReadMonotonicTime,0x20042
.set OS_ReadMonotonicTime,0x42
   @Exit
   @  R0 = t (OS_T)

.set XOS_SubstituteArgs,0x20043
.set OS_SubstituteArgs,0x43
   @Entry
   @  R0 -> args (String)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @  R3 -> source (String)
   @  R4 = source_size (Int)
   @Exit
   @  R2 = used (Int)

.set XOS_SubstituteArgs32,0x2007e
.set OS_SubstituteArgs32,0x7e
   @Entry
   @  R0 -> args (String)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @  R3 -> source (String)
   @  R4 = source_size (Int)
   @  R5 = flags (OS_SubstituteArgsFlags)
   @Exit
   @  R2 = used (Int)

.set XOS_PrettyPrint,0x20044
.set OS_PrettyPrint,0x44
   @Entry
   @  R0 -> string (String)
   @  R1 -> dictionary (data)
   @  R2 -> special (String)

.set XOSPrettyPrint_GetOSDict,0x20044
.set OSPrettyPrint_GetOSDict,0x44
   @Entry
   @  R0 = &0
   @  R1 = &0
   @  R2 = &0
   @Exit
   @  R1 -> os_dict (data)

.set XOS_Plot,0x20045
.set OS_Plot,0x45
   @Entry
   @  R0 = plot_code (OS_PlotCode)
   @  R1 = x (Int)
   @  R2 = y (Int)

.set XOS_WriteN,0x20046
.set OS_WriteN,0x46
   @Entry
   @  R0 -> s (String)
   @  R1 = size (Int)

.set XOS_AddToVector,0x20047
.set OS_AddToVector,0x47
   @Entry
   @  R0 = vector (Int)
   @  R1 = routine (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_WriteEnv,0x20048
.set OS_WriteEnv,0x48
   @Entry
   @  R0 -> command (String)
   @  R1 -> start (OS_DateAndTime)

.set XOS_ReadArgs,0x20049
.set OS_ReadArgs,0x49
   @Entry
   @  R0 -> keywords (String)
   @  R1 -> input (String)
   @  R2 = buffer (pointer to String)
   @  R3 = size (Int)
   @Exit
   @  R3 = spare (Int)

.set XOS_ReadRAMFsLimits,0x2004a
.set OS_ReadRAMFsLimits,0x4a
   @Exit
   @  R0 -> start (data)
   @  R1 -> end (Char)

.set XOS_ClaimDeviceVector,0x2004b
.set OS_ClaimDeviceVector,0x4b
   @Entry
   @  R0 = device (OS_DeviceType)
   @  R1 = driver (pointer to code)
   @  R2 = handle (Int)
   @  R3 = status (pointer to Int)
   @  R4 = mask (Bits)

.set XOS_ClaimDeviceVectorAndGetHandler,0x2004b
.set OS_ClaimDeviceVectorAndGetHandler,0x4b
   @Entry
   @  R0 = &20000000 :OR: device (OS_DeviceType)
   @  R1 = driver (pointer to code)
   @  R2 = handle (Int)
   @  R3 = status (pointer to Int)
   @  R4 = mask (Bits)
   @Exit
   @  R1 = handler (pointer to code)
   @  R2 = ws_ptr (Int)

.set XOS_ClaimCoreIRQHandler,0x20048
.set OS_ClaimCoreIRQHandler,0x48
   @Entry
   @  R0 = &FFFFFFFF
   @  R1 = handler (pointer to code)
   @  R2 = ws_ptr (Int)
   @Exit
   @  R1 = handler_unclaimed (pointer to code)
   @  R2 = ws_ptr_unclaimed (Int)

.set XOS_ReleaseDeviceVector,0x2004c
.set OS_ReleaseDeviceVector,0x4c
   @Entry
   @  R0 = device (OS_DeviceType)
   @  R1 = driver (pointer to code)
   @  R2 = handle (pointer to data)
   @  R3 = status (pointer to Int)
   @  R4 = mask (Bits)

.set XOS_ReleaseCoreIRQHandler,0x2004c
.set OS_ReleaseCoreIRQHandler,0x4c
   @Entry
   @  R0 = &FFFFFFFF
   @  R1 = handler (pointer to code)
   @  R2 = ws_ptr (Int)

.set XOS_DelinkApplication,0x2004d
.set OS_DelinkApplication,0x4d
   @Entry
   @  R0 = vector_details (pointer to data)
   @  R1 = size (Int)
   @Exit
   @  R1 = used (Int)

.set XOS_RelinkApplication,0x2004e
.set OS_RelinkApplication,0x4e
   @Entry
   @  R0 -> vector_details (data)

.set XOS_HeapSort,0x2004f
.set OS_HeapSort,0x4f
   @Entry
   @  R0 = count (Int)
   @  R1 = array (pointer to Int)
   @  R2 = compare_fn (OS_SortType)
   @  R3 = handle (pointer to data)
   @  R4 = objects (pointer to data)
   @  R5 = object_size (Int)
   @  R6 = workspace (pointer to Void)

.set XOS_HeapSort32,0x2007f
.set OS_HeapSort32,0x7f
   @Entry
   @  R0 = count (Int)
   @  R1 = array (pointer to Int)
   @  R2 = compare_fn (OS_SortType)
   @  R3 = handle (pointer to data)
   @  R4 = objects (pointer to data)
   @  R5 = object_size (Int)
   @  R6 = workspace (pointer to Void)
   @  R7 = flags (OS_HeapSortFlags)

.set XOS_ExitAndDie,0x20050
.set OS_ExitAndDie,0x50
   @Entry
   @  R0 -> error (OS_Error)
   @  R1 = &58454241
   @  R2 = rc (Int)
   @  R3 -> module_name (String)

.set XOS_ReadMemMapInfo,0x20051
.set OS_ReadMemMapInfo,0x51
   @Exit
   @  R0 = page_size (Int)
   @  R1 = page_count (Int)

.set XOS_ReadMemMapEntries,0x20052
.set OS_ReadMemMapEntries,0x52
   @Entry
   @  R0 = request_list (pointer to OS_MemMapRequestList)

.set XOS_SetMemMapEntries,0x20053
.set OS_SetMemMapEntries,0x53
   @Entry
   @  R0 -> request_list (OS_MemMapRequestList)

.set XOS_AddCallBack,0x20054
.set OS_AddCallBack,0x54
   @Entry
   @  R0 = call_back (pointer to code)
   @  R1 = handle (pointer to data)

.set XOS_ReadDefaultHandler,0x20055
.set OS_ReadDefaultHandler,0x55
   @Entry
   @  R0 = handler_type (Int)
   @Exit
   @  R1 = handler (pointer to code)
   @  R2 = handle (pointer to data)
   @  R3 = buffer (pointer to data)

.set XOS_SetECFOrigin,0x20056
.set OS_SetECFOrigin,0x56
   @Entry
   @  R0 = x (Int)
   @  R1 = y (Int)

.set XOS_Confirm,0x20059
.set OS_Confirm,0x59
   @Exit
   @  R0 = key (Char)

.set XOS_ChangedBox,0x2005a
.set OS_ChangedBox,0x5a
   @Entry
   @  R0 = state (OS_ChangedBoxState)
   @Exit
   @  R0 = enabled (Bool)
   @  R1 -> change_box (OS_ChangeBox)

.set XOS_CRC,0x2005b
.set OS_CRC,0x5b
   @Entry
   @  R0 = crc_in (Int)
   @  R1 -> block (data)
   @  R2 -> end (data)
   @  R3 = stride (Int)
   @Exit
   @  R0 = crc (Int)

.set XOS_ReadDynamicArea,0x2005c
.set OS_ReadDynamicArea,0x5c
   @Entry
   @  R0 = area (OS_DynamicAreaNo)
   @Exit
   @  R0 = area_start (pointer to data)
   @  R1 = size (Int)
   @  R2 = size_limit (Int)

.set XOS_PrintChar,0x2005d
.set OS_PrintChar,0x5d
   @Entry
   @  R0 = c (Char)

.set XOS_ChangeRedirection,0x2005e
.set OS_ChangeRedirection,0x5e
   @Entry
   @  R0 = input (OS_F)
   @  R1 = output (OS_F)
   @Exit
   @  R0 = old_input (OS_F)
   @  R1 = old_output (OS_F)

.set XOS_ChangeRedirectionW,0x2005e
.set OS_ChangeRedirectionW,0x5e
   @Entry
   @  R0 = input (OS_FW)
   @  R1 = output (OS_FW)
   @Exit
   @  R0 = old_input (OS_FW)
   @  R1 = old_output (OS_FW)

.set XOS_RemoveCallBack,0x2005f
.set OS_RemoveCallBack,0x5f
   @Entry
   @  R0 = call_back (pointer to code)
   @  R1 = handle (pointer to data)

.set XOS_FindMemMapEntries,0x20060
.set OS_FindMemMapEntries,0x60
   @Entry
   @  R0 = request_list (pointer to OS_MemMapRequestList)

.set XOS_SetColour,0x20061
.set OS_SetColour,0x61
   @Entry
   @  R0 = flags (OS_ColourFlags)
   @  R1 = colour_number (OS_ColourNumber)

.set XOS_ReadColour,0x20061
.set OS_ReadColour,0x61
   @Entry
   @  R0 = &80 :OR: flags (OS_ColourFlags)
   @  R1 = pattern (pointer to OS_ECF)
   @Exit
   @  R0 = flags_out (OS_ColourFlags)
   @  R1 = colour_number (OS_ColourNumber)

.set XOS_ClaimSWI,0x20062
.set OS_ClaimSWI,0x62
   @Entry
   @  R0 = swi (Int)
   @  R1 = routine (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_ReleaseSWI,0x20063
.set OS_ReleaseSWI,0x63
   @Entry
   @  R0 = swi (Int)
   @  R1 = routine (pointer to code)
   @  R2 = handle (pointer to data)

.set XOS_Pointer,0x20064
.set OS_Pointer,0x64

#  define OSPointer_Get 0x0
   @Entry
   @  R0 = &0
   @Exit
   @  R0 = pointer_type (OS_PointerType)

#  define OSPointer_Set 0x1
   @Entry
   @  R0 = &1
   @  R1 = pointer_type (OS_PointerType)
   @Exit
   @  R0 corrupted

#  define OSPointer_ReadAlternatePosition 0x2
   @Entry
   @  R0 = &2
   @Exit
   @  R0 = xposition (Int)
   @  R1 = yposition (Int)

.set XOS_ScreenMode,0x20065
.set OS_ScreenMode,0x65

#  define OSScreenMode_Select 0x0
   @Entry
   @  R0 = &0
   @  R1 = mode (OS_Mode)

#  define OSScreenMode_Current 0x1
   @Entry
   @  R0 = &1
   @Exit
   @  R1 = mode (OS_Mode)

#  define OSScreenMode_Enumerate 0x2
   @Entry
   @  R0 = &2
   @  R2 = context (Int)
   @  R6 = block (pointer to OS_ModeBlock)
   @  R7 = block_size (Int)
   @Exit
   @  R1 = complete (Bool)
   @  R2 = context_out (Int)
   @  R6 -> end (data)
   @  R7 = free (Int)

#  define OSScreenMode_SelectMonitorType 0x3

#  define OSScreenMode_ConfigAcceleration 0x4
   @Entry
   @  R0 = &4
   @  R1 = flags (OSScreenModeConfigAcceleration_Flags)
   @  R2 = laziness (OSScreenModeConfigAcceleration_CleanerLaziness)
   @Exit
   @  R1 = current_flags (OSScreenModeConfigAcceleration_Flags)
   @  R2 = current_laziness (OSScreenModeConfigAcceleration_CleanerLaziness)

#  define OSScreenMode_RequestClean 0x5
   @Entry
   @  R0 = &5

#  define OSScreenMode_ForceClean 0x6
   @Entry
   @  R0 = &6

#  define OSScreenMode_CountNumberBanks 0x7
   @Entry
   @  R0 = &7
   @Exit
   @  R1 = num_banks (Int)

#  define OSScreenMode_SelectDisplayBank 0x8
   @Entry
   @  R0 = &8
   @  R1 = bank_number (Int)
   @Exit
   @  R0 = prev_bank (Int)
   @  R1 = new_bank (Int)
   @  R2 -> bank_addr (Void)

#  define OSScreenMode_ReadDisplayBank 0x8
   @Entry
   @  R0 = &8
   @  R1 = &0
   @Exit
   @  R0 = prev_bank (Int)
   @  R1 = new_bank (Int)
   @  R2 -> bank_addr (Void)

#  define OSScreenMode_SelectDriverBank 0x9
   @Entry
   @  R0 = &9
   @  R1 = bank_number (Int)
   @Exit
   @  R0 = prev_bank (Int)
   @  R1 = new_bank (Int)
   @  R2 -> bank_addr (Void)

#  define OSScreenMode_ReadDriverBank 0x9
   @Entry
   @  R0 = &9
   @  R1 = &0
   @Exit
   @  R0 = prev_bank (Int)
   @  R1 = new_bank (Int)
   @  R2 -> bank_addr (Void)

#  define OSScreenMode_CopyBank 0xa
   @Entry
   @  R0 = &A
   @  R1 = src_bank (Int)
   @  R2 = dst_bank (Int)

#  define OSScreenMode_SelectDisplayDevice 0xb
   @Entry
   @  R0 = &B
   @  R1 = display_number (Int)
   @Exit
   @  R1 = prev_display_number (Int)

#  define OSScreenMode_ReadDisplayDevice 0xb
   @Entry
   @  R0 = &B
   @  R1 = &FFFFFFFF
   @Exit
   @  R1 = cur_display_number (Int)

#  define OSScreenMode_ReadDisplayDetails 0xc
   @Entry
   @  R0 = &C
   @  R1 = display_number (Int)
   @  R2 = tag (OSDisplayDevice_TagTagLength)
   @  R3 -> buf (Int)
   @  R4 = buf_size (Int)
   @Exit
   @  R4 = buf_size_out (Int)

#  define OSScreenMode_ModeStringToSpecifier 0xd
   @Entry
   @  R0 = &D
   @  R1 -> mode_string (Char)
   @  R2 -> mode_specifier (OS_Mode)
   @  R3 = size_mode_specifier (Int)

#  define OSScreenMode_ModeSpecifierToString 0xe
   @Entry
   @  R0 = &E
   @  R1 -> mode_specifier (OS_Mode)
   @  R2 = buf_mode_string (pointer to Char)
   @  R3 = buf_mode_string_size (Int)
   @Exit
   @  R3 = buf_free (Int)

#  define OSScreenMode_SelectModeWithModeString 0xf
   @Entry
   @  R0 = &F
   @  R1 -> mode_string (Char)

#  define OSScreenMode_ReadMaxDisplayNumber 0xfd
   @Entry
   @  R0 = &FD
   @Exit
   @  R1 = display_number (Int)

#  define OSScreenMode_DeregisterDisplayDevice 0xfe
   @Entry
   @  R0 = &FE
   @  R1 = display_number (Int)

#  define OSScreenMode_RegisterDisplayDevice 0xff
   @Entry
   @  R0 = &FF
   @  R1 -> descriptor (OSDisplayDeviceDescriptor)
   @Exit
   @  R0 = display_number (Int)
   @  R1 = vsync_dispatch (pointer to code)
   @  R2 = ws_ptr (Int)
   @  R3 = action (OSScreenModeRegisterDisplayDriver_Action)

.set XOS_DynamicArea,0x20066
.set OS_DynamicArea,0x66

#  define OSDynamicArea_Create 0x0
   @Entry
   @  R0 = &0
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = size (Int)
   @  R3 -> base_address (data)
   @  R4 = flags (OS_AreaFlags)
   @  R5 = size_limit (Int)
   @  R6 = handler (pointer to code)
   @  R7 = workspace (pointer to Void)
   @  R8 -> description (String)
   @Exit
   @  R1 = area_out (OS_DynamicAreaNo)
   @  R3 -> base_address_out (data)
   @  R5 = size_limit_out (Int)

#  define OSDynamicArea_Delete 0x1
   @Entry
   @  R0 = &1
   @  R1 = area (OS_DynamicAreaNo)

#  define OSDynamicArea_Read 0x2
   @Entry
   @  R0 = &2
   @  R1 = area (OS_DynamicAreaNo)
   @Exit
   @  R2 = size (Int)
   @  R3 -> base_address (data)
   @  R4 = flags (OS_AreaFlags)
   @  R5 = size_limit (Int)
   @  R6 = handler (pointer to code)
   @  R7 = workspace (pointer to Void)
   @  R8 -> description (String)

#  define OSDynamicArea_Enumerate 0x3
   @Entry
   @  R0 = &3
   @  R1 = context (Int)
   @Exit
   @  R1 = context_out (Int)

#  define OSDynamicArea_Renumber 0x4
   @Entry
   @  R0 = &4
   @  R1 = old_area (OS_DynamicAreaNo)
   @  R2 = new_area (OS_DynamicAreaNo)

#  define OSDynamicArea_FreeSpace 0x5
   @Entry
   @  R0 = &5
   @  R1 = exclude_area (OS_DynamicAreaNo)
   @Exit
   @  R1 = free_space (Int)

#  define OSDynamicArea_SetClamps 0x8
   @Entry
   @  R0 = &8
   @  R1 = unlimited_area_clamp (Int)
   @  R2 = limited_area_clamp (Int)
   @  R3 = sparse_area_clamp (Int)
   @Exit
   @  R1 = old_unlimited_area_clamp (Int)
   @  R2 = old_limited_area_clamp (Int)
   @  R3 = old_sparse_area_clamp (Int)

#  define OSDynamicArea_EnsureRegion 0x9
   @Entry
   @  R0 = &9
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 -> base_address (data)
   @  R3 = size (Int)

#  define OSDynamicArea_ReleaseRegion 0xa
   @Entry
   @  R0 = &A
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 -> base_address (data)
   @  R3 = size (Int)

#  define OSDynamicArea_LockArea 0xb
   @Entry
   @  R0 = &B
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = lock_code (Int)

#  define OSDynamicArea_UnlockArea 0xc
   @Entry
   @  R0 = &C
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = lock_code (Int)

#  define OSDynamicArea_HeapDescribe 0xe
   @Entry
   @  R0 = &E
   @  R1 = area (OS_DynamicAreaNo)
   @Exit
   @  R2 = max (Int)
   @  R3 = free (Int)

#  define OSDynamicArea_HeapAlloc 0xf
   @Entry
   @  R0 = &F
   @  R1 = area (OS_DynamicAreaNo)
   @  R3 = size (Int)
   @Exit
   @  R2 = blk (pointer to Void)

#  define OSDynamicArea_HeapFree 0x10
   @Entry
   @  R0 = &10
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = blk (pointer to Void)

#  define OSDynamicArea_HeapRealloc 0x11
   @Entry
   @  R0 = &11
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = blk (pointer to Void)
   @  R3 = size_increase (Int)
   @Exit
   @  R2 = blk_out (pointer to Void)

#  define OSDynamicArea_HeapReadSize 0x12
   @Entry
   @  R0 = &12
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = blk (pointer to Void)
   @Exit
   @  R3 = size (Int)

#  define OSDynamicArea_ChangeDomainState 0x13
   @Entry
   @  R0 = &13
   @  R1 = area (OS_DynamicAreaNo)
   @  R2 = state (OSDynamicAreaDomain_State)
   @Exit
   @  R2 = old_state (OSDynamicAreaDomain_State)

.set XOS_AbortTrap,0x20067
.set OS_AbortTrap,0x67
   @Entry
   @  R0 = operation (OSAbortTrap_Flags)
   @  R1 = low_address (Int)
   @  R2 = high_address (Int)
   @  R3 = abort_handler (pointer to code)
   @  R4 = r12_abort_handler (Int)

.set XOS_Memory,0x20068
.set OS_Memory,0x68

#  define OSMemory_PageOp 0x0
   @Entry
   @  R0 = &0 :OR: flags (OSMemory_Flags)
   @  R1 -> page_block (OS_PageBlock)
   @  R2 = page_count (Int)

#  define OSMemory_ReadArrangementTableSize 0x6
   @Entry
   @  R0 = &6
   @Exit
   @  R1 = table_size (Int)
   @  R2 = page_size (Int)

#  define OSMemory_ReadArrangementTable 0x7
   @Entry
   @  R0 = &7
   @  R1 = arrangement_table (pointer to data)

#  define OSMemory_ReadSize 0x8
   @Entry
   @  R0 = &8 :OR: type (OSMemory_TypeFlags)
   @Exit
   @  R1 = page_count (Int)
   @  R2 = page_size (Int)

#  define OSMemory_ReadController 0x9
   @Entry
   @  R0 = &9
   @  R1 = controller (OSMemory_ControllerFlags)
   @Exit
   @  R1 = controller_addr (pointer to code)

#  define OSMemory_LockFreePool 0xa

#  define OSMemory_MapPCIMemory 0xb

#  define OSMemory_RecommendPage 0xc
   @Entry
   @  R0 = &C :OR: flags (OSMemoryRecommendPage_Flags)
   @  R1 = size (Int)
   @  R2 = alignment (Int)
   @Exit
   @  R3 = page_number (Int)

#  define OSMemory_MapInPermanentIO 0xd
   @Entry
   @  R0 = &D :OR: flags (OSMemory_IOFlags)
   @  R1 = phys_addr (pointer to data)
   @  R2 = size (Int)
   @Exit
   @  R3 = log_addr (pointer to data)

#  define OSMemory_MapInTemporaryIO 0xe
   @Entry
   @  R0 = &E :OR: flags (OSMemory_IOFlags)
   @  R1 = phys_addr (pointer to data)
   @Exit
   @  R2 = log_addr (pointer to data)
   @  R3 = key (OSMemory_IOReferenceKey)

#  define OSMemory_MapOutTemporaryIO 0xf
   @Entry
   @  R0 = &F
   @  R1 = key (OSMemory_IOReferenceKey)

#  define OSMemory_GetAreaInfo 0x10
   @Entry
   @  R0 = &10 :OR: type (OSMemory_AreaFlags)
   @Exit
   @  R1 = base (pointer to data)
   @  R2 = allocated (Int)
   @  R3 = used (Int)

#  define OSMemory_CheckMemoryAccess 0x18
   @Entry
   @  R0 = &18 :OR: flags (OSMemoryCheckMemoryAccess_Flags)
   @  R1 = low (pointer to data)
   @  R2 = high (pointer to data)
   @Exit
   @  R1 = access_flags (OSMemoryCheckMemoryAccess_Bits)

#  define OSMemory_ReadControllerBaseAddress 0x19
   @Entry
   @  R0 = &19 :OR: flags (OSMemoryReadControllerBaseAddress_Flags)
   @  R1 = controller (OSMemory_ControllerFlags)
   @Exit
   @  R1 = address (pointer to data)

.set XOS_ClaimProcessorVector,0x20069
.set OS_ClaimProcessorVector,0x69

#  define OSClaimProcessorVector_Alloc 0x100
   @Entry
   @  R0 = &100 :OR: vector (Bits)
   @  R1 = routine (pointer to code)
   @Exit
   @  R1 = old_routine (pointer to code)

#  define OSClaimProcessorVector_Free 0x0
   @Entry
   @  R0 = &0 :OR: vector (Bits)
   @  R2 = old_routine (pointer to code)
   @Exit
   @  R1 corrupted

.set XOS_Reset,0x2006a
.set OS_Reset,0x6a

.set XOS_MMUControl,0x2006b
.set OS_MMUControl,0x6b
   @Entry
   @  R0 = &0
   @  R1 = eor_mask (Bits)
   @  R2 = and_mask (Bits)
   @Exit
   @  R1 = old_value (Bits)
   @  R2 corrupted

#  define OS_MMUControlFlushRequest 0x1
   @Entry
   @  R0 = &1 :OR: request_type (OS_MMUControlFlushRequestFlags)

#  define OS_MMUControlFlushRequestSingleEntry 0x20000001
   @Entry
   @  R0 = &20000001
   @  R1 = entry_address (pointer to data)

.set XOS_PlatformFeatures,0x2006d
.set OS_PlatformFeatures,0x6d

#  define OSPlatformFeatures_GetFeatures 0x0
   @Entry
   @  R0 = &0
   @Exit
   @  R0 = flags (OS_PlatformFeatureFlags)
   @  R1 = predisable_fn (pointer to code)

#  define OSPlatformFeatures_GetMMUFeatures 0x1
   @Entry
   @  R0 = &1
   @Exit
   @  R0 = cache_enabled_state (Int)
   @  R1 = cache_disabled_state (Int)
   @  R2 = acceptable_flags_proc (Int)
   @  R3 = required_flags_proc (Int)
   @  R4 = acceptable_flags_os (Int)
   @  R6 = required_flags_os (Int)

.set XOS_SynchroniseCodeAreas,0x2006e
.set OS_SynchroniseCodeAreas,0x6e
   @Entry
   @  R0 = flags (Bits)
   @  R1 = start (pointer to code)
   @  R2 = end (pointer to code)

.set XOS_CallASWI,0x2006f
.set OS_CallASWI,0x6f

.set XOS_AMBControl,0x20070
.set OS_AMBControl,0x70

#  define OSAMBControl_Create 0x0
   @Entry
   @  R0 = &0
   @  R1 = pages (Int)
   @Exit
   @  R1 = pages_out (Int)
   @  R2 = amb (OS_AMB)

#  define OSAMBControl_Delete 0x1
   @Entry
   @  R0 = &1
   @  R2 = amb (OS_AMB)

#  define OSAMBControl_Resize 0x2
   @Entry
   @  R0 = &2
   @  R1 = pages (Int)
   @  R2 = amb (OS_AMB)
   @Exit
   @  R1 = pages_out (Int)
   @  R2 = amb_out (OS_AMB)
   @  R3 = pages_before (Int)

#  define OSAMBControl_Map 0x3
   @Entry
   @  R0 = &3 :OR: flags (OS_AMBControlFlags)
   @  R1 -> base_address (data)
   @  R2 = amb (OS_AMB)
   @  R3 = start (Int)
   @  R4 = end (Int)

#  define OSAMBControl_Info 0x4
   @Entry
   @  R0 = &4
   @  R2 = amb (OS_AMB)
   @Exit
   @  R1 -> base_address (data)
   @  R3 = pages (Int)

#  define OSAMBControl_LazySwapping 0x5
   @Entry
   @  R0 = &5
   @  R1 = action (OS_LazySwapping)
   @Exit
   @  R1 = state (OS_LazySwapping)

#  define OSAMBControl_Enumerate 0x8
   @Entry
   @  R0 = &8
   @  R1 = table (pointer to OS_AMBTable)

.set XOS_CallASWIR12,0x20071
.set OS_CallASWIR12,0x71

.set XOS_EnterUSR32,0x20073
.set OS_EnterUSR32,0x73

.set XOS_EnterUSR26,0x20074
.set OS_EnterUSR26,0x74

.set XOS_ClaimOSSWI,0x20077
.set OS_ClaimOSSWI,0x77

#  define OSClaimOSSWI_Claim 0x0
   @Entry
   @  R0 = &0
   @  R1 = swi (Int)
   @  R2 = routine (pointer to code)
   @  R3 = handle (pointer to data)
   @Exit
   @  R2 = old_routine (pointer to code)
   @  R3 = old_handle (pointer to data)

#  define OSClaimOSSWI_Release 0x1
   @Entry
   @  R0 = &1
   @  R1 = swi (Int)
   @  R2 = routine (pointer to code)
   @  R3 = handle (pointer to data)

.set XOS_TaskControl,0x20078
.set OS_TaskControl,0x78

#  define OSTaskControl_ReadAddrStackResetCode 0x0
   @Entry
   @  R0 = &0
   @Exit
   @  R0 = routine (pointer to code)

.set XOS_Hardware,0x2007a
.set OS_Hardware,0x7a

#  define OS_HardwareCallHAL 0x0
   @Entry
   @  R0 = arg1 (Int)
   @  R1 = arg2 (Int)
   @  R2 = arg3 (Int)
   @  R3 = arg4 (Int)
   @  R4 = arg5 (Int)
   @  R5 = arg6 (Int)
   @  R6 = arg7 (Int)
   @  R7 = arg8 (Int)
   @  R8 = &0 :OR: flags (OS_HardwareFlags)
   @  R9 = call (Int)
   @Exit
   @  R0 = result1 (Int)
   @  R1 = result2 (Int)
   @  R2 = result3 (Int)
   @  R3 = result4 (Int)

#  define OS_HardwareFindHALRoutine 0x1
   @Entry
   @  R8 = &1 :OR: flags (OS_HardwareFlags)
   @  R9 = call (Int)
   @Exit
   @  R0 = routine (pointer to code)
   @  R1 = static_base (Int)

.set XOS_ConvertStandardDateAndTime,0x200c0
.set OS_ConvertStandardDateAndTime,0xc0
   @Entry
   @  R0 -> date_and_time (OS_DateAndTime)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertDateAndTime,0x200c1
.set OS_ConvertDateAndTime,0xc1
   @Entry
   @  R0 -> date_and_time (OS_DateAndTime)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @  R3 -> format (String)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertHex1,0x200d0
.set OS_ConvertHex1,0xd0
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertHex2,0x200d1
.set OS_ConvertHex2,0xd1
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertHex4,0x200d2
.set OS_ConvertHex4,0xd2
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertHex6,0x200d3
.set OS_ConvertHex6,0xd3
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertHex8,0x200d4
.set OS_ConvertHex8,0xd4
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertCardinal1,0x200d5
.set OS_ConvertCardinal1,0xd5
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertCardinal2,0x200d6
.set OS_ConvertCardinal2,0xd6
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertCardinal3,0x200d7
.set OS_ConvertCardinal3,0xd7
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertCardinal4,0x200d8
.set OS_ConvertCardinal4,0xd8
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertInteger1,0x200d9
.set OS_ConvertInteger1,0xd9
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertInteger2,0x200da
.set OS_ConvertInteger2,0xda
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertInteger3,0x200db
.set OS_ConvertInteger3,0xdb
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertInteger4,0x200dc
.set OS_ConvertInteger4,0xdc
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertBinary1,0x200dd
.set OS_ConvertBinary1,0xdd
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertBinary2,0x200de
.set OS_ConvertBinary2,0xde
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertBinary3,0x200df
.set OS_ConvertBinary3,0xdf
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertBinary4,0x200e0
.set OS_ConvertBinary4,0xe0
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedCardinal1,0x200e1
.set OS_ConvertSpacedCardinal1,0xe1
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedCardinal2,0x200e2
.set OS_ConvertSpacedCardinal2,0xe2
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedCardinal3,0x200e3
.set OS_ConvertSpacedCardinal3,0xe3
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedCardinal4,0x200e4
.set OS_ConvertSpacedCardinal4,0xe4
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedInteger1,0x200e5
.set OS_ConvertSpacedInteger1,0xe5
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedInteger2,0x200e6
.set OS_ConvertSpacedInteger2,0xe6
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedInteger3,0x200e7
.set OS_ConvertSpacedInteger3,0xe7
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertSpacedInteger4,0x200e8
.set OS_ConvertSpacedInteger4,0xe8
   @Entry
   @  R0 = value (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertFixedNetStation,0x200e9
.set OS_ConvertFixedNetStation,0xe9
   @Entry
   @  R0 -> station_number (OS_StationNumber)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertNetStation,0x200ea
.set OS_ConvertNetStation,0xea
   @Entry
   @  R0 -> station_number (OS_StationNumber)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertFixedFileSize,0x200eb
.set OS_ConvertFixedFileSize,0xeb
   @Entry
   @  R0 = file_size (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_ConvertFileSize,0x200ec
.set OS_ConvertFileSize,0xec
   @Entry
   @  R0 = file_size (Int)
   @  R1 = buffer (pointer to String)
   @  R2 = size (Int)
   @Exit
   @  R0 corrupted
   @  R1 -> end (Char)
   @  R2 corrupted

.set XOS_WriteI,0x20100
.set OS_WriteI,0x100

.set XOS_Null,0x20100
.set OS_Null,0x100

.set XOS_CharToPrinter,0x20101
.set OS_CharToPrinter,0x101

.set XOS_PrinterOn,0x20102
.set OS_PrinterOn,0x102

.set XOS_PrinterOff,0x20103
.set OS_PrinterOff,0x103

.set XOS_SplitCursors,0x20104
.set OS_SplitCursors,0x104

.set XOS_JoinCursors,0x20105
.set OS_JoinCursors,0x105

.set XOS_VDUOn,0x20106
.set OS_VDUOn,0x106

.set XOS_Bell,0x20107
.set OS_Bell,0x107

.set XOS_Backspace,0x20108
.set OS_Backspace,0x108

.set XOS_Tab,0x20109
.set OS_Tab,0x109

.set XOS_LineFeed,0x2010a
.set OS_LineFeed,0x10a

.set XOS_VerticalTab,0x2010b
.set OS_VerticalTab,0x10b

.set XOS_ClS,0x2010c
.set OS_ClS,0x10c

.set XOS_Return,0x2010d
.set OS_Return,0x10d

.set XOS_PageModeOn,0x2010e
.set OS_PageModeOn,0x10e

.set XOS_PageModeOff,0x2010f
.set OS_PageModeOff,0x10f

.set XOS_ClG,0x20110
.set OS_ClG,0x110

.set XOS_SetTextColour,0x20111
.set OS_SetTextColour,0x111

.set XOS_SetGCOL,0x20112
.set OS_SetGCOL,0x112

.set XOS_SetPalette,0x20113
.set OS_SetPalette,0x113

.set XOS_ResetColours,0x20114
.set OS_ResetColours,0x114

.set XOS_VDUOff,0x20115
.set OS_VDUOff,0x115

.set XOS_SetMode,0x20116
.set OS_SetMode,0x116

.set XOS_Misc,0x20117
.set OS_Misc,0x117

.set XOS_SetGraphicsWindow,0x20118
.set OS_SetGraphicsWindow,0x118

.set XOS_PlotVDU,0x20119
.set OS_PlotVDU,0x119

.set XOS_ResetWindows,0x2011a
.set OS_ResetWindows,0x11a

.set XOS_Escape,0x2011b
.set OS_Escape,0x11b

.set XOS_SetTextWindow,0x2011c
.set OS_SetTextWindow,0x11c

.set XOS_SetGraphicsOrigin,0x2011d
.set OS_SetGraphicsOrigin,0x11d

.set XOS_HomeTextCursor,0x2011e
.set OS_HomeTextCursor,0x11e

.set XOS_SetTextCursor,0x2011f
.set OS_SetTextCursor,0x11f

.set XOS_Space,0x20120
.set OS_Space,0x120

.set XOS_Delete,0x2017f
.set OS_Delete,0x17f

#  define UserV 0x0

#  define ErrorV 0x1
   @Entry
   @  R0 -> error (OS_Error)
   @  R9 = &1

#  define IrqV 0x2
   @Entry
   @  R9 = &2

#  define WrchV 0x3
   @Entry
   @  R0 = c (Char)
   @  R9 = &3

#  define RdchV 0x4
   @Entry
   @  R9 = &4
   @Exit
   @  R0 = c (Char)

#  define CLIV 0x5
   @Entry
   @  R0 -> command (String)
   @  R9 = &5

#  define ReadLineV 0xe
   @Entry
   @  R0 = buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @  R4 = echo (Char)
   @  R9 = &E
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

#  define ReadLine32V 0xe
   @Entry
   @  R0 = buffer (pointer to String)
   @  R1 = size (Int)
   @  R2 = min_char (Char)
   @  R3 = max_char (Char)
   @  R4 = flags (OSReadLine_Flags)
   @  R9 = &E
   @Exit
   @  R0 corrupted
   @  R1 = used (Int)
   @  R2 corrupted
   @  R3 corrupted

#  define EventV 0x10

#  define KeyV 0x13

#  define KeyV_Present 0x0
   @Entry
   @  R0 = &0
   @  R1 = keyboard_type (KeyV_Type)
   @  R9 = &13

#  define KeyV_PresentNoDebounce 0x0
   @Entry
   @  R0 = &0
   @  R1 = keyboard_type (KeyV_Type)
   @  R2 = &4E6F4B64
   @  R9 = &13

#  define KeyV_TransitionUp 0x1
   @Entry
   @  R0 = &1
   @  R1 = key (Int)
   @  R9 = &13

#  define KeyV_TransitionDown 0x2
   @Entry
   @  R0 = &2
   @  R1 = key (Int)
   @  R9 = &13

#  define KeyV_LEDState 0x3
   @Entry
   @  R0 = &3
   @  R1 = flags (Bits)
   @  R9 = &13

#  define KeyV_EnableDrivers 0x4
   @Entry
   @  R0 = &4
   @  R9 = &13

#  define UKVDU23V 0x17
   @Entry
   @  R0 = n (Int)
   @  R1 -> queue (Byte)
   @  R9 = &17

#  define UKSWIV 0x18

#  define UKPLOTV 0x19
   @Entry
   @  R0 = plot_code (OS_PlotCode)
   @  R9 = &19

#  define MouseV 0x1a
   @Entry
   @  R9 = &1A
   @Exit
   @  R0 = x (Int)
   @  R1 = y (Int)
   @  R2 = buttons (Bits)
   @  R3 = t (OS_T)

#  define VDUXV 0x1b
   @Entry
   @  R0 = b (Byte)
   @  R9 = &1B

#  define TickerV 0x1c
   @Entry
   @  R9 = &1C

#  define UpCallV 0x1d

#  define ChangeEnvironmentV 0x1e
   @Entry
   @  R0 = handler_type (OS_HandlerType)
   @  R1 = handler (pointer to code)
   @  R2 = handle (pointer to data)
   @  R3 = buffer (pointer to data)
   @  R9 = &1E
   @Exit
   @  R1 = old_handler (pointer to code)
   @  R2 = old_handle (pointer to data)
   @  R3 = old_buffer (pointer to data)

#  define PaletteV 0x23

#  define PaletteV_ReadEntry 0x1
   @Entry
   @  R0 = entry (OS_ColourNumber)
   @  R1 = colour_type (Int)
   @  R4 = &1
   @  R9 = &23
   @Exit
   @  R2 = on (OS_Colour)
   @  R3 = off (OS_Colour)
   @  R4 = incomplete (Bool)

#  define PaletteV_SetEntry 0x2
   @Entry
   @  R0 = entry (OS_ColourNumber)
   @  R1 = colour_type (Int)
   @  R2 = on (OS_Colour)
   @  R3 = off (OS_Colour)
   @  R4 = &2
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_SetOn 0x3
   @Entry
   @  R4 = &3
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_SetOff 0x4
   @Entry
   @  R4 = &4
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_Default 0x5
   @Entry
   @  R4 = &5
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_BlankScreen 0x6
   @Entry
   @  R0 = state (PaletteV_ScreenState)
   @  R4 = &6
   @  R9 = &23
   @Exit
   @  R0 = state_out (PaletteV_ScreenState)
   @  R4 = incomplete (Bool)

#  define PaletteV_ReadEntries 0x7
   @Entry
   @  R0 -> entry_list (OS_ColourNumber)
   @  R1 = colour_type_and_entry_count (Bits)
   @  R2 = on (pointer to OS_Palette)
   @  R3 = off (pointer to OS_Palette)
   @  R4 = &7
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_WriteEntries 0x8
   @Entry
   @  R0 -> entry_list (OS_ColourNumber)
   @  R1 = colour_type_and_entry_count (Bits)
   @  R2 -> palette (OS_Palette)
   @  R4 = &8
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_SetGammaCorrections 0x9
   @Entry
   @  R0 -> red_table (OS_CorrectionTable)
   @  R1 -> green_table (OS_CorrectionTable)
   @  R2 -> blue_table (OS_CorrectionTable)
   @  R4 = &9
   @  R9 = &23
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_InvertLCD 0xa

#  define PaletteV_DimScreen 0xb

#  define PaletteV_DisableVideoHardware 0xc
   @Entry
   @  R4 = &C
   @Exit
   @  R4 = incomplete (Bool)

#  define PaletteV_EnableVideoHardware 0xd
   @Entry
   @  R4 = &D
   @Exit
   @  R4 = incomplete (Bool)

#  define PointerV 0x26

#  define PointerV_Status 0x0
   @Entry
   @  R0 = &0
   @  R1 = pointer_type (OS_PointerType)
   @  R9 = &26
   @Exit
   @  R2 = xmove (Int)
   @  R3 = ymove (Int)

#  define PointerV_Enumerate 0x1
   @Entry
   @  R0 = &1
   @  R1 -> record (PointerV_Record)
   @  R9 = &26
   @Exit
   @  R1 -> record_out (PointerV_Record)

#  define PointerV_Selected 0x2
   @Entry
   @  R0 = &2
   @  R1 = pointer_type (OS_PointerType)
   @  R9 = &26

#  define PointerV_ExtendedStatus 0x4
   @Entry
   @  R0 = &4
   @  R1 = pointer_type (OS_PointerType)
   @  R9 = &26
   @Exit
   @  R0 = claimed (Int)
   @  R2 = xmove (Int)
   @  R3 = ymove (Int)
   @  R4 = xmove_alternate (Int)
   @  R5 = ymove_alternate (Int)
   @  R6 = buttons (Bits)

#  define NVRAMV 0x3e

#  define NVRAMV_FillCache 0x0
   @Entry
   @  R0 = &0
   @  R1 = cache (pointer to Byte)
   @  R2 = cache_size (Int)
   @  R9 = &3E
   @Exit
   @  R2 = nvram_size (Int)

#  define NVRAMV_ReadSingleValue 0x1
   @Entry
   @  R0 = &1
   @  R1 = index (Int)
   @  R9 = &3E
   @Exit
   @  R1 = value (Byte)

#  define NVRAMV_WriteSingleValue 0x2
   @Entry
   @  R0 = &2
   @  R1 = index (Int)
   @  R2 = value (Byte)
   @  R9 = &3E

#  define Service_ReleaseFIQ 0xb
   @Entry
   @  R1 = &B

#  define Service_ClaimFIQ 0xc
   @Entry
   @  R1 = &C

#  define Service_Reset 0x27
   @Entry
   @  R1 = &27

#  define Service_KeyHandler 0x44
   @Entry
   @  R1 = &44
   @  R2 = keyboard_id (Int)

#  define Service_ModeChange 0x46
   @Entry
   @  R1 = &46

#  define Service_ClaimFIQInBackground 0x47
   @Entry
   @  R1 = &47

#  define Service_MemoryMoved 0x4e
   @Entry
   @  R1 = &4E

#  define Service_PreModeChange 0x4d
   @Entry
   @  R1 = &4D
   @  R2 = mode (OS_Mode)

#  define Service_ModeExtension 0x50
   @Entry
   @  R1 = &50
   @  R2 = mode (OS_Mode)
   @  R3 = monitor_type (Int)
   @  R4 = bandwidth (Int)
   @  R5 = vram_size (Int)
   @Exit
   @  R1 = unclaimed (Bool)
   @  R3 -> vidc_list (Int)
   @  R4 -> workspace_list (Int)

#  define Service_ModeTranslation 0x51
   @Entry
   @  R1 = &51
   @  R2 = mode (OS_Mode)
   @  R3 = monitor_type (Int)

#  define Service_ValidateAddress 0x6d
   @Entry
   @  R1 = &6D

#  define Service_MonitorLeadTranslation 0x76
   @Entry
   @  R1 = &76
   @  R2 = lead_id (Int)

#  define Service_ModeChanging 0x89
   @Entry
   @  R1 = &89
   @  R2 = mode (OS_Mode)
   @  R3 = monitor_type (Int)

#  define Service_EnumerateScreenModes 0x8d
   @Entry
   @  R1 = &8D
   @  R2 = context (Int)
   @  R3 = monitor_type (Int)
   @  R4 = bandwidth (Int)
   @  R5 = vram_size (Int)
   @  R6 = block (pointer to OS_ModeBlock)
   @  R7 = block_size (Int)
   @Exit
   @  R1 = unclaimed (Bool)
   @  R2 = context_out (Int)
   @  R6 -> end (data)
   @  R7 = free (Int)

#  define Service_PagesUnsafe 0x8e
   @Entry
   @  R1 = &8E
   @  R2 -> page_block (OS_PageBlock)
   @  R3 = request_count (Int)

#  define Service_PagesSafe 0x8f
   @Entry
   @  R1 = &8F
   @  R2 = request_count (Int)
   @  R3 -> old_page_block (OS_PageBlock)
   @  R4 -> new_page_block (OS_PageBlock)

#  define Service_DynamicAreaCreate 0x90
   @Entry
   @  R1 = &90
   @  R2 = area (Int)

#  define Service_DynamicAreaRemove 0x91
   @Entry
   @  R1 = &91
   @  R2 = area (Int)

#  define Service_DynamicAreaRenumber 0x92
   @Entry
   @  R1 = &92
   @  R2 = area (Int)

#  define Service_DisplayChanged 0xde
   @Entry
   @  R0 = state (ServiceDisplayChanged_State)
   @  R1 = &DE
   @  R2 = display_number (Int)
   @  R3 = &0

#  define Service_DisplayStatus 0xdf
   @Entry
   @  R0 = reason (ServiceDisplayStatus_Reason)
   @  R1 = &DF
   @  R2 = display_number (Int)
   @  R3 = descriptor (pointer to OSDisplayDeviceDescriptor)

#  define Service_DeviceReregister 0xe2
   @Entry
   @  R0 = device (OS_DeviceType)
   @  R1 = &E2

#  define Event_CharInput 0x2
   @Entry
   @  R0 = &2
   @  R1 = buffer (Int)
   @  R2 = b (Byte)

#  define Event_VSync 0x4
   @Entry
   @  R0 = &4

#  define Event_IntervalTimer 0x5
   @Entry
   @  R0 = &5

#  define Event_Escape 0x6
   @Entry
   @  R0 = &6

#  define Event_User 0x9

#  define Event_MouseTransition 0xa
   @Entry
   @  R0 = &A
   @  R1 = x (Int)
   @  R2 = y (Int)
   @  R3 = state (Bits)
   @  R4 = t (OS_T)

#  define Event_KeyTransition 0xb
   @Entry
   @  R0 = &B
   @  R1 = down (Bool)
   @  R2 = key (Int)
   @  R3 = keyboard_id (Int)

#  define Event_PointerScroll 0x4
   @Entry
   @  R0 = &15
   @  R1 = &4
   @  R2 = xmove (Int)
   @  R3 = ymove (Int)

#  define UpCall_MoveMemoryRequest 0x101
   @Entry
   @  R0 = &101
   @  R1 = size_change (Int)
   @Exit
   @  R0 = not_moved (Bool)

#endif
